openstack(liberty):部署实验平台(一,基础网络环境搭建)
2016-02-01 10:48
781 查看
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):
再看看em2的ifcfg-em2的内容:
SNAT配置比较简单,第一步,就在iptables里面的nat表配置一下:
配置完成后,查看下iptables的snat信息如下:
注意,只有第一个是-A添加chain为POSTROUTING,后面三个都是-I插入操作。第二步就是要打开IP forwarding,修改/etc/sysctl.conf文件,找到net.ipv4.ip_forward,修改成下面的样子:
这里,说下,起初我的SNAT配置如下,只有一条语句如下:
最后,发现从跳转机器上无法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表:
但是,考虑到,这样子iptables-save保存的文件没有办法开机后自动载入到iptables中,需要做一些启动时的自动加载的脚本操作,不方便,最终选择直接在/etc/sysconfig/iptables文件下面修改:
经过测试,发现,这样子是可以满足使用,但是,既然有这么一个机器作为跳转机,做网关,为何不将其做的更加通用一点呢,选择nat的MASQUERADE.最终的配置如下,也是写如/etc/sysconfig/iptables文件中:
接下来,要配置openstack的其他几个节点机器了,每个机器的配置都差不多,下面,我就拿controller node0节点为例说明。
1. 改hostname,在/etc/sysconfig/network文件里面添加下面的一行配置
然后,修改/etc/hosts文件。
2. 修改dns配置/etc/resolve.conf.添加下面的两行内容:
3. 添加静态的路由,在/etc/sysconfig/static-routes文件中添加下面的一行内容(若没有这个文件,可以自己创建一个)
4. 下面看看em1的配置信息:
到此,上面的控制节点上的所有的基础网络配置就算结束了,可以在这里ping一下www.baidu.com,是可以打开的:
到此,我的网络基础连接已经完成,为继续前行做好了准备!
下面看看我的节点拓扑图,有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 TYPE=Ethernet 2 BOOTPROTO=none 3 IPADDR0=192.168.1.1 4 PREFIX0=24 5 NETMASK=255.255.255.0 6 GATEWAY0=192.168.1.1 7 DEFROUTE=yes 8 IPV4_FAILURE_FATAL=no 9 IPV6INIT=no 10 IPV6_AUTOCONF=no 11 IPV6_DEFROUTE=no 12 IPV6_FAILURE_FATAL=no 13 NAME=em2 14 UUID=444422af-5b4e-4e34-a1bc-3d009ef0237f 15 ONBOOT=yes 16 USERCTL=no 17 HWADDR=18:03:73:F0:C3:91 18 IPV6_PEERDNS=no 19 IPV6_PEERROUTES=no
SNAT配置比较简单,第一步,就在iptables里面的nat表配置一下:
[root@fedora1 ~]# iptables -t nat -A POSTROUTING -s 192.168.1.100 -j SNAT --to-source a.b.c.d
[root@fedora1 ~]# iptables -t nat -I POSTROUTING -s 192.168.1.110 -j SNAT --to-source a.b.c.d
[root@fedora1 ~]# iptables -t nat -I POSTROUTING -s 192.168.1.120 -j SNAT --to-source a.b.c.d
[root@fedora1 ~]# iptables -t nat -I POSTROUTING -s 192.168.1.130 -j SNAT --to-source a.b.c.d
配置完成后,查看下iptables的snat信息如下:
[root@fedora1 ~]# iptables -t nat -L Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination SNAT all -- 192.168.1.130 anywhere to:a.b.c.d SNAT all -- 192.168.1.120 anywhere to:a.b.c.d SNAT all -- 192.168.1.110 anywhere to:a.b.c.d 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,修改成下面的样子:
net.ipv4.ip_forward=1
这里,说下,起初我的SNAT配置如下,只有一条语句如下:
[root@fedora1 ~]# 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表:
[root@fedora1 ~]# iptables-save -t nat # Generated by iptables-save v1.4.19.1 on Mon Feb 1 10:37:37 2016 *nat :PREROUTING ACCEPT [1260048:116139336] :INPUT ACCEPT [146564:41543662] :OUTPUT ACCEPT [25035:1519835] :POSTROUTING ACCEPT [25394:1545241] -A POSTROUTING -s 192.168.1.130/32 -j SNAT --to-source a.b.c.d -A POSTROUTING -s 192.168.1.120/32 -j SNAT --to-source a.b.c.d -A POSTROUTING -s 192.168.1.110/32 -j SNAT --to-source a.b.c.d -A POSTROUTING -s 192.168.1.100/32 -j SNAT --to-source a.b.c.d COMMIT # Completed on Mon Feb 1 10:37:37 2016
但是,考虑到,这样子iptables-save保存的文件没有办法开机后自动载入到iptables中,需要做一些启动时的自动加载的脚本操作,不方便,最终选择直接在/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 -s 192.168.1.130/32 -j SNAT --to-source a.b.c.d 8 -A POSTROUTING -s 192.168.1.120/32 -j SNAT --to-source a.b.c.d 9 -A POSTROUTING -s 192.168.1.110/32 -j SNAT --to-source a.b.c.d 10 -A POSTROUTING -s 192.168.1.100/32 -j SNAT --to-source a.b.c.d 11 COMMIT 12 # Completed on Tue Mar 10 14:56:49 2015 13 # Generated by iptables-save v1.4.19.1 on Tue Mar 10 14:56:49 2015 14 *filter 15 :INPUT ACCEPT [19308:5028665] 16 :FORWARD ACCEPT [123:7700] 17 :OUTPUT ACCEPT [13913:3438191] 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文件。
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.100 node0 192.168.1.110 node1 192.168.1.120 node2 192.168.1.130 node3
2. 修改dns配置/etc/resolve.conf.添加下面的两行内容:
search 219.141.136.10 nameserver 202.106.0.20
3. 添加静态的路由,在/etc/sysconfig/static-routes文件中添加下面的一行内容(若没有这个文件,可以自己创建一个)
any net default gw gateway 192.168.1.1
4. 下面看看em1的配置信息:
TYPE=Ethernet BOOTPROTO=none DEFROUTE=no IPV4_FAILURE_FATAL=no IPV6INIT=no IPV6_AUTOCONF=no IPV6_DEFROUTE=no IPV6_FAILURE_FATAL=no NAME=em1 UUID=1f0572e7-b6a8-4342-83f3-749c00e1007e ONBOOT=yes HWADDR=18:03:73:F0:C3:1A IPADDR0=192.168.1.100 PREFIX0=24 GATEWAY0=192.168.1.1 IPV6_PEERDNS=no IPV6_PEERROUTES=no
到此,上面的控制节点上的所有的基础网络配置就算结束了,可以在这里ping一下www.baidu.com,是可以打开的:
[root@node0 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
到此,我的网络基础连接已经完成,为继续前行做好了准备!
相关文章推荐
- java 网络编程(三)---TCP的基础级示例
- HTTPS 原理解析(转)
- TCP初始化序列号ISN
- java 网络编程(二)----UDP基础级的示例
- 网络模拟器WANem使用配置图文教程
- 两种请求方式URLHttpconnection 和Httpclient提交表单 网络篇(二)
- 原生 NSURL 网络请求 GET POST
- 深入分析JavaWeb 4 -- Http协议
- 想成为网络安全技术爱好者(可能是黑客)的话,需要看什么书?
- Linux极客命令(网络篇)
- HTTPS 原理解析
- SYN标志
- A20网络机顶盒移植4.5内核+U-Boot+rootfs
- 通读AFN③--HTTPS访问控制(AFSecurityPolicy),Reachability(AFNetworkReachabilityManager)
- 厦门巨游网络科技有限公司(HOTPOWER)承接游戏UI外包
- ntpdate——linux firefox 访问163邮箱 失败 https proload
- (OK-HALF) To Find a Rogue DHCP Server—tcpdump/dhclient—nmap
- acl 3.1.2版本发布,网络通信与服务器编程框架
- Linux环境下网络编程杂谈
- CentOS6—启动httpd失败—Certificate has expired