openstack(liberty):部署实验平台(一,基础网络环境搭建)

openstack项目的研究,到今天,算是要进入真实环境了,要部署实验平台了。不再用devstack了。也就是说,要独立controller,compute,storage和network了。要做这个的第一步,就是要将各个服务器的软件环境(操作系统是否满足liberty的要求,centos最好是7以上),以及服务器之间的网络连接通路打通,方便后续的软件安装需要。

下面看看我的节点拓扑图,有5台机器,其中参与这个openstack的节点有4个,计划中的controller,network,storage(cinder/glance/swift),compute。另外一个节点机器用来作为跳转机器用。因为没有那么多公网IP,只有一个服务器有公网IP,所以,openstack的节点机器只能是内网IP了,我选择的是192.168.1.xxx,如下图所示:

从上图可以看出,中间机器是通过NAT实现的跳转。SNAT是为了方便各个openstack机器方便访问公网,DNAT是为了从公网访问controller节点的dashboard的,因为这个要等到后续openstack的软件安装好后,再测试。这里就不提供这个的配置。虽然跳转机器上显示有两个网络连接,一个是public的,一个是gateway的内网连接到cisco的交换机上。其实,上图中的每台机器都有4个NIC,这几个机器都是poweredge r610服务器,由于老旧,都差不多成为了一堆费铁了。安装centos7折腾了我2天,机器启动慢的要死,启动界面提示信息,各种不正常。主要命的是只有一个机器的光驱是好的,BT公司不允许用U盘,最终折腾这些错误和残疾的设备问题,浪费了我太多时间,没有办法,在十几个硬盘中找能识别出来的,往那个光驱能用的机器上倒腾安装操作系统。。。我也是醉了,几个服务器,一个显示器,一个键盘,一个鼠标,一个能用的光驱。。。。

不扯淡了,现在,重点是要说说,各个节点上的配置信息。

首先说说跳转机器,主要配置信息就是SNAT,以及设置一个NIC作为gateway用。因为每个机器上都有em1-em4这四个NIC,跳转机器,我用em1作外网接口,em2用作gateway接口,配置192.168.1.1这个IP地址。

看看em1的ifcfg-em1配置信息(vim /etc/sysconfig/network-scripts/ifcfg-em1):

  1 HWADDR=18:03:73:f0:c3:8f
  2 TYPE=Ethernet
  3 BOOTPROTO=none
  4 IPADDR0=a.b.c.d
  5 PREFIX0=24
  6 DEFROUTE=yes
  7 IPV4_FAILURE_FATAL=no
  8 IPV6INIT=yes
  9 IPV6_AUTOCONF=yes
 10 IPV6_DEFROUTE=yes
 11 IPV6_PEERDNS=yes
 12 IPV6_PEERROUTES=yes
 13 IPV6_FAILURE_FATAL=no
 14 NAME=em1
 15 UUID=add4414c-d48b-4470-a578-98c7a6a0f508
 16 ONBOOT=yes
 17 NETMASK=255.255.255.0
 18 USERCTL=no
 19 PREFIX=24
 20 GATEWAY0=a.b.c.1

再看看em2的ifcfg-em2的内容:

 1   1 TYPE=Ethernet
 2   2 BOOTPROTO=none
 3   3 IPADDR0=192.168.1.1
 4   4 PREFIX0=24
 5   5 NETMASK=255.255.255.0
 6   6 GATEWAY0=192.168.1.1
 7   7 DEFROUTE=yes
 8   8 IPV4_FAILURE_FATAL=no
 9   9 IPV6INIT=no
10  10 IPV6_AUTOCONF=no
11  11 IPV6_DEFROUTE=no
12  12 IPV6_FAILURE_FATAL=no
13  13 NAME=em2
14  14 UUID=444422af-5b4e-4e34-a1bc-3d009ef0237f
15  15 ONBOOT=yes
16  16 USERCTL=no
17  17 HWADDR=18:03:73:F0:C3:91
18  18 IPV6_PEERDNS=no
19  19 IPV6_PEERROUTES=no

SNAT配置比较简单,第一步,就在iptables里面的nat表配置一下:

1 [[email protected] ~]# iptables -t nat -A POSTROUTING -s 192.168.1.100 -j SNAT --to-source a.b.c.d
1 [[email protected] ~]# iptables -t nat -I POSTROUTING -s 192.168.1.110 -j SNAT --to-source a.b.c.d
1 [[email protected] ~]# iptables -t nat -I POSTROUTING -s 192.168.1.120 -j SNAT --to-source a.b.c.d
1 [[email protected] ~]# iptables -t nat -I POSTROUTING -s 192.168.1.130 -j SNAT --to-source a.b.c.d

配置完成后,查看下iptables的snat信息如下:

 1 [[email protected] ~]# iptables -t nat -L
 2 Chain PREROUTING (policy ACCEPT)
 3 target     prot opt source               destination
 4
 5 Chain INPUT (policy ACCEPT)
 6 target     prot opt source               destination
 7
 8 Chain OUTPUT (policy ACCEPT)
 9 target     prot opt source               destination
10
11 Chain POSTROUTING (policy ACCEPT)
12 target     prot opt source               destination
13 SNAT       all  --  192.168.1.130        anywhere             to:a.b.c.d
14 SNAT       all  --  192.168.1.120        anywhere             to:a.b.c.d
15 SNAT       all  --  192.168.1.110        anywhere             to:a.b.c.d
16 SNAT       all  --  192.168.1.100        anywhere             to:a.b.c.d

注意,只有第一个是-A添加chain为POSTROUTING,后面三个都是-I插入操作。第二步就是要打开IP forwarding,修改/etc/sysctl.conf文件,找到net.ipv4.ip_forward,修改成下面的样子:

1 net.ipv4.ip_forward=1

这里,说下,起初我的SNAT配置如下,只有一条语句如下:

1 [[email protected] ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source a.b.c.d

最后,发现从跳转机器上无法ping通其他的机器(其他openstack机器,比如controller等),但是从其他的几个节点可以ping通跳转机。起初以为是网关连接交换机的网线坏掉,后来换线后发现还是如此,仔细分析了下SNAT的配置,应该是这个配置的包转发逻辑出了点问题,也就是说,在跳转机上执行ping 192.168.1.100时,所有的从192.168.1.1出去的icmp包最后又发回到了这个跳转机器。于是,我就修改为四条iptables的规则操作,如上面的一个A三个I的操作,这样,就将192.168.1.1这个source的IP避开了,最终测试,双向都可以ping通了。

注意,上面的操作,只是临时的哟,要永久生效,必须写到/etc/sysconfig/iptables文件里面,或者,基于上面的命令执行完毕,再执行iptables-save 命令,我这里指定只save nat表:

 1 [[email protected] ~]# iptables-save -t nat
 2 # Generated by iptables-save v1.4.19.1 on Mon Feb  1 10:37:37 2016
 3 *nat
 4 :PREROUTING ACCEPT [1260048:116139336]
 5 :INPUT ACCEPT [146564:41543662]
 6 :OUTPUT ACCEPT [25035:1519835]
 7 :POSTROUTING ACCEPT [25394:1545241]
 8 -A POSTROUTING -s 192.168.1.130/32 -j SNAT --to-source a.b.c.d
 9 -A POSTROUTING -s 192.168.1.120/32 -j SNAT --to-source a.b.c.d
10 -A POSTROUTING -s 192.168.1.110/32 -j SNAT --to-source a.b.c.d
11 -A POSTROUTING -s 192.168.1.100/32 -j SNAT --to-source a.b.c.d
12 COMMIT
13 # Completed on Mon Feb  1 10:37:37 2016

但是,考虑到,这样子iptables-save保存的文件没有办法开机后自动载入到iptables中,需要做一些启动时的自动加载的脚本操作,不方便,最终选择直接在/etc/sysconfig/iptables文件下面修改:

 1 1 # Generated by iptables-save v1.4.19.1 on Tue Mar 10 14:56:49 2015
 2   2 *nat
 3   3 :PREROUTING ACCEPT [259:28155]
 4   4 :INPUT ACCEPT [16:4183]
 5   5 :OUTPUT ACCEPT [1:60]
 6   6 :POSTROUTING ACCEPT [2:111]
 7   7 -A POSTROUTING -s 192.168.1.130/32 -j SNAT --to-source a.b.c.d
 8   8 -A POSTROUTING -s 192.168.1.120/32 -j SNAT --to-source a.b.c.d
 9   9 -A POSTROUTING -s 192.168.1.110/32 -j SNAT --to-source a.b.c.d
10  10 -A POSTROUTING -s 192.168.1.100/32 -j SNAT --to-source a.b.c.d
11  11 COMMIT
12  12 # Completed on Tue Mar 10 14:56:49 2015
13  13 # Generated by iptables-save v1.4.19.1 on Tue Mar 10 14:56:49 2015
14  14 *filter
15  15 :INPUT ACCEPT [19308:5028665]
16  16 :FORWARD ACCEPT [123:7700]
17  17 :OUTPUT ACCEPT [13913:3438191]
18  18 COMMIT

经过测试,发现,这样子是可以满足使用,但是,既然有这么一个机器作为跳转机,做网关,为何不将其做的更加通用一点呢,选择nat的MASQUERADE.最终的配置如下,也是写如/etc/sysconfig/iptables文件中:

  1 # Generated by iptables-save v1.4.19.1 on Tue Mar 10 14:56:49 2015
  2 *nat
  3 :PREROUTING ACCEPT [259:28155]
  4 :INPUT ACCEPT [16:4183]
  5 :OUTPUT ACCEPT [1:60]
  6 :POSTROUTING ACCEPT [2:111]
  7 -A POSTROUTING -o em1 -j MASQUERADE
  8 COMMIT
  9 # Completed on Tue Mar 10 14:56:49 2015
 10 # Generated by iptables-save v1.4.19.1 on Tue Mar 10 14:56:49 2015
 11 *filter
 12 :INPUT ACCEPT [19308:5028665]
 13 :FORWARD ACCEPT [123:7700]
 14 :OUTPUT ACCEPT [13913:3438191]
 15 COMMIT
 16 # Completed on Tue Mar 10 14:56:49 2015

接下来,要配置openstack的其他几个节点机器了,每个机器的配置都差不多,下面,我就拿controller node0节点为例说明。

1. 改hostname,在/etc/sysconfig/network文件里面添加下面的一行配置

# Created by anaconda
HOSTNAME=node0

然后,修改/etc/hosts文件。

1 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
2 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
3 192.168.1.100   node0
4 192.168.1.110   node1
5 192.168.1.120   node2
6 192.168.1.130   node3

2. 修改dns配置/etc/resolve.conf.添加下面的两行内容:

1 search 219.141.136.10
2 nameserver 202.106.0.20

3. 添加静态的路由,在/etc/sysconfig/static-routes文件中添加下面的一行内容(若没有这个文件,可以自己创建一个)

1 any net default gw gateway 192.168.1.1

4. 下面看看em1的配置信息:

 1 TYPE=Ethernet
 2 BOOTPROTO=none
 3 DEFROUTE=no
 4 IPV4_FAILURE_FATAL=no
 5 IPV6INIT=no
 6 IPV6_AUTOCONF=no
 7 IPV6_DEFROUTE=no
 8 IPV6_FAILURE_FATAL=no
 9 NAME=em1
10 UUID=1f0572e7-b6a8-4342-83f3-749c00e1007e
11 ONBOOT=yes
12 HWADDR=18:03:73:F0:C3:1A
13 IPADDR0=192.168.1.100
14 PREFIX0=24
15 GATEWAY0=192.168.1.1
16 IPV6_PEERDNS=no
17 IPV6_PEERROUTES=no

到此,上面的控制节点上的所有的基础网络配置就算结束了,可以在这里ping一下www.baidu.com,是可以打开的:

[[email protected] opt]# ping www.baidu.com
PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.
64 bytes from 61.135.169.125: icmp_seq=1 ttl=51 time=9.09 ms
64 bytes from 61.135.169.125: icmp_seq=2 ttl=51 time=4.06 ms
64 bytes from 61.135.169.125: icmp_seq=3 ttl=51 time=13.0 ms
64 bytes from 61.135.169.125: icmp_seq=4 ttl=51 time=4.49 ms
64 bytes from 61.135.169.125: icmp_seq=5 ttl=51 time=4.75 ms
64 bytes from 61.135.169.125: icmp_seq=6 ttl=51 time=4.21 ms
^C
--- www.a.shifen.com ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5008ms
rtt min/avg/max/mdev = 4.065/6.609/13.034/3.356 ms

到此,我的网络基础连接已经完成,为继续前行做好了准备!

时间: 2024-10-13 06:39:31

openstack(liberty):部署实验平台(一,基础网络环境搭建)的相关文章

openstack(liberty):部署实验平台(二,简单版本软件安装 part1)

软件安装过程中,考虑到现在是一个实验环境,且也考虑到规模不大,还有,网络压力不会大,出于简单考虑,将各个节点的拓扑结构改了一下,主要体现在网络节点和控制节点并在了一起.在一个服务器上安装! 到目前位置,我的这个平台,只有keystone,glance,neutron,dashboard以及nova几个服务.省出的那个服务器,打算也作为计算节点.所以,最新规划topo如下了: 绿色节点表示目前已经安装了openstack的模块软件,灰色部分,表示下一步即将安装的部分. 下面简要说下安装的过程,重点

OpenCV基础篇——环境搭建

在开始使用opencv的时候第一步就是搭建环境,关于opencv的环境搭建其实很简单,网上也有很多,一般来说才开始学习都会搭建环境很多次,至少我是这样的.这样对问题的排除有很很大的帮助.现在就把我的搭建方式分享一下: 一.opencv+vs2010 1.opencv的获取: 最好从opencv的官网获取,也可以从opencv的官方中文论坛获取:http://wiki.opencv.org.cn/index.php/%E9%A6%96%E9%A1%B5 我使用的是opencv2.4.4版的,基本上

Centos 基础开发环境搭建之Maven私服nexus

1. 软件 a) 下载Nexus 地址:http://www.sonatype.org/downloads/nexus-2.1.2-bundle.tar.gz b) 如无特殊说明,本文档操作用户为nexus c) nexus默认的管理员用户名密码是:admin/admin123 2. 安装 a) 解压 1 $ tar zxvf nexus-2.1.2-bundle.tar.gz b) 移动到其他目录 1 $ mv nexus-2.1.2 /home/nexus/nexus c) 设置为系统自启动

记录.NET Core部署到Linux之.NET Core环境搭建(1)

原文:记录.NET Core部署到Linux之.NET Core环境搭建(1) 1.在安装.NET之前,您需要注册Microsoft密钥.注册产品存储库和安装所需的依赖项. 启动我们的虚拟机,输入以下命令: sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm 2.安装.NET SDK 输入命令:sudo yum update ;按y回车 3.输入命令sudo yum inst

安卓开发基础知识0(五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程)

需求说明:安卓开发 内容       :安卓开发所需的环境搭建 来自       :时间的诗 原文:http://www.cnblogs.com/zoupeiyang/p/4034517.html 参考:http://jingyan.baidu.com/article/bea41d437a41b6b4c51be6c1.html 引言 在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为

五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程

在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为了确保大家能顺利完成开发环境的搭建,文章写的尽量详细,希望对准备进入Android开发的朋友有帮助. 本教程将分为五个步骤来完成Android开发环境的部署. 第一步:安装JDK. 第二步:配置Windows上JDK的变量环境 . 第三步: 下载安装Eclipse . 第四步:下载安装Android SDK . 第五步:为Eclips

【后端技术栈1】基础开发环境搭建

谁谁说过,不积跬步无以至千里,基础的环境和工具能快速搭建和上手需要积累和练习,下面是一些常用的工具和环境搭建,希望不再各种寻找和对比各种教程,亲测可用: JDK1.8安装和验证 数据库的安装 MySQL+Navicat:MySQL 8.0.12安装教程(windows 64位)  https://blog.csdn.net/qq_37350706/article/details/81707862 Oracle:Oracle 11g数据库详细安装步骤图解,附带安装包  https://blog.c

Openstack 安装部署指南翻译系列 之 网络

网络包括两种类型,网络选项1:提供商网络(Provider networks)和网络选项2:自助网络(Self-service networks),其中网络选项2:自助网络(Self-service networks)能够实现更加高级的网络功能,能够实现网络选项1的所有功能,因此我们的项目选择网络选项2:自助网络(Self-service networks).以下是虚拟网络选项的说明: 1.1.1.1. 网络选项1:提供商网络(Provider networks) 提供商网络选项以最简单的方式部

黑马程序员-java基础知识+环境搭建和变量配置

一.dos命令 软件:是一系列按照特定顺序组织的计算机数据和指令的集合. 交互方式:图形化界面.命令行方式 dir  directory 显示文件和子目录 cd   change directory 改变当前的路径(进入指定目录) md   make directory 新建一个子目录(文件夹) rd   remove directory 删除一个子目录(文件夹) cd.. 返回上一文件夹 cd/  返回根目录(磁盘) del  delete 删除文件 (不走回收站)   del *.txt(删