2013年12月5日星期四

CentOS 6.4 Openstack Havana 多节点安装(OVS+GRE)

Openstack的网络一共有5种,其实对于租户网络来说,应该就是4种。所谓Flat模式,并不是租户的网络,而是把虚拟机直接放在 provider networks,就是管理员创建一个网络,让所有的租户直接连接到外网,获得的是公网的IP,不需要经过NAT
  1. local模式:这主要是给测试使用,只能是all in one,不能再添加节点
  2. GRE模式:隧道数量没有限制,性能有点问题。
  3. Vlan模式:vlan数量有4096的限制
  4. VXlan模式:vlan数量没有限制,性能比GRE好。
每一种模式,网络的配置都会有所不同,打算每种网络模式,写一篇文章介绍。这里主要是介绍GRE模式的配置。
我的RDO的网络设置和应答文件 GRE模式:http://t.cn/8DDql5W Vlan模式:http://t.cn/8DDql5O 完成后,自己手工创建ifcfg-br-ex http://t.cn/8DDql50
2013年11月22日:目前RDO在多节点部署有bug,在计算节点创建的虚拟机都会失败。http://openstack.redhat.com/forum/discussion/910/havanna-issues-with-multi-node#Item_14  解决办法就是装完后在控制节点,添加一条iptables的规则:
iptables -I INPUT -s 172.28.1.12/32 -p tcp --dport 9696 -j ACCEPT
并保存规则:service iptables save ,172,28,1,12是我计算节点的IP地址。
2013年11月27日:如果你发现虚拟机访问外网速度很慢,在控制节点,准确说,在网络节点,我的例子里是br-ex绑定在eth0上,运行下面命令,就会让虚拟机访问外网获得正常速度。
ethtool --offload eth0 gro off

基本情况

服务器公网虚拟机通讯网络角色
node10eth0:172.28.1.10/16eth1:10.1.1.10/24控制节点,网络节点,存储节点,计算节点
node12eth0:172.28.1.12/16eth1:10.1.1.12/24计算节点

和vlan模式配置一个明显的区别,就是eth1,是需要配置一个私有的IP地址,必须配置。
网关:172.28.0.1
需要注意:Neutron和Nova network一个明显的不同就是Floating IP的范围和fix ip,这些都是可以通过web方式进行设置。
虚拟机使用的Floating IP:172.28.3.100,172.28.3.200
GRE模式的一个好处就是不需要在交换机做任何配置。
这是龚永生的原理图,我稍微修改了一下,用eth0连接路由器
Snap3

网络基本设置

这是node10的IP设置,node12,也只是修改一下IP地址就可以。
Eth0
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
HWADDR=00:E0:81:D8:43:BE
TYPE=Ethernet
BOOTPROTO=none
IPADDR=172.28.1.10
NETMASK=255.255.0.0

Eth1
# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
HWADDR="00:E0:81:D8:43:BF"
TYPE=Ethernet
BOOTPROTO=none
IPADDR=10.1.1.10
NETMASK=255.255.255.0

设置源

cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
yum list

LVM设置(可选)

这主要是为了给cinder-volumes单独一个分区,提高性能。
umount /dev/sda2
pvcreate /dev/sda2
vgcreate cinder-volumes /dev/sda2

修改/etc/fstab 去掉cinder-volume的开机挂载,不然会导致你无法重启
sed -i '/cinder-volume/s/^/#/' /etc/fstab

安装packstack

yum install -y http://rdo.fedorapeople.org/openstack/openstack-havana/rdo-release-havana.rpm
yum install -y openstack-packstack
yum -y update

内核更新,所以需要重启机器.

Packstack设置

创建一个应答文件
packstack --gen-answer-file=multi-node-gre-node10.txt
修改配置文件
修改应答文件,由于我已经有专门的cinder volume, 所以不需要创建。如果你没有手工创建cinder volume,那么你就不修改就可以。默认heat和Nagios是没有安装,你可以修改。
CONFIG_CINDER_VOLUMES_CREATE=n
CONFIG_NTP_SERVERS=0.uk.pool.ntp.org
CONFIG_KEYSTONE_ADMIN_PW=admin
CONFIG_NOVA_COMPUTE_HOSTS=172.28.1.10,172.28.1.12
CONFIG_NEUTRON_OVS_TENANT_NETWORK_TYPE=gre
CONFIG_NEUTRON_OVS_TUNNEL_RANGES=1:1000
CONFIG_NEUTRON_OVS_TUNNEL_IF=eth1

GRE的网络,主要是修改后面的3行就可以。
进行安装
packstack --answer-file=multi-node-gre-node10.txt

安装过程,有可能因为源的原因中断,你可以重复运行。

虚拟机访问外网

装完后,查看一下网络
# ovs-vsctl show
9cf303ec-618d-4976-a031-b65646b4e491
    Bridge br-tun
        Port br-tun
            Interface br-tun
                type: internal
        Port patch-int
            Interface patch-int
                type: patch
                options: {peer=patch-tun}
    Bridge br-int
        Port br-int
            Interface br-int
                type: internal
        Port patch-tun
            Interface patch-tun
                type: patch
                options: {peer=patch-int}
    Bridge br-ex
        Port br-ex
            Interface br-ex
                type: internal
    ovs_version: "1.11.0"

由于目前RDO的问题,没有创建br-ex,需要我们手工来创建,这个只需要在node10进行就可以,具体点说,应该是在网络节点上进行。
# cat /etc/sysconfig/network-scripts/ifcfg-br-ex 
DEVICE=br-ex
IPADDR=172.28.1.10
PREFIX=16
GATEWAY=172.28.0.1 
DNS1=114.114.114.114
ONBOOT=yes

修改 /etc/sysconfig/network-scripts/ifcfg-eth0,  注意:一定要加上eth0 的mac地址,不然会出错。
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
HWADDR=00:E0:81:D8:43:BE
然后运行下面命令
ovs-vsctl add-port br-ex eth0; service network restart

Snap2
这个时候,看看网络的设置
# ovs-vsctl show
9cf303ec-618d-4976-a031-b65646b4e491
    Bridge br-tun
        Port br-tun
            Interface br-tun
                type: internal
        Port patch-int
            Interface patch-int
                type: patch
                options: {peer=patch-tun}
    Bridge br-int
        Port br-int
            Interface br-int
                type: internal
        Port patch-tun
            Interface patch-tun
                type: patch
                options: {peer=patch-int}
    Bridge br-ex
        Port "eth0"
            Interface "eth0"
        Port br-ex
            Interface br-ex
                type: internal
    ovs_version: "1.11.0"

网卡详细信息
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:e0:81:d8:43:be brd ff:ff:ff:ff:ff:ff
    inet6 fe80::2e0:81ff:fed8:43be/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:e0:81:d8:43:bf brd ff:ff:ff:ff:ff:ff
    inet 10.1.1.12/24 brd 10.1.1.255 scope global eth1
    inet6 fe80::2e0:81ff:fed8:43bf/64 scope link 
       valid_lft forever preferred_lft forever
94: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
    link/ether 52:54:00:3a:bf:90 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
95: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 500
    link/ether 52:54:00:3a:bf:90 brd ff:ff:ff:ff:ff:ff
107: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
    link/ether 9a:b8:00:8e:c9:6d brd ff:ff:ff:ff:ff:ff
108: br-int: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
    link/ether 66:30:7d:42:9c:43 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::70b6:c2ff:fef9:3509/64 scope link 
       valid_lft forever preferred_lft forever
110: br-tun: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
    link/ether 4e:41:41:1e:a1:43 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::30cc:7fff:fe2d:758b/64 scope link 
       valid_lft forever preferred_lft forever
111: br-ex: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
    link/ether 00:e0:81:d8:43:be brd ff:ff:ff:ff:ff:ff
    inet 172.28.1.10/16 brd 172.28.255.255 scope global br-ex
    inet6 fe80::2e0:81ff:fed8:43be/64 scope link 
       valid_lft forever preferred_lft forever

附录

OVS.integration_bridge:br-int
OVS.tunnel_bridge:br-tun
OVS.local_ip:GRE网络使用:就是内部的IP,这里就是eth1上的IP地址
OVS.tunnel_id_ranges:1:1000,就是ID的范围,GRE网络的隧道数量。
OVS.bridge_mappings :physnet1:br-eth1,vlan模式使用该参数
OVS.network_vlan_ranges:physnet1:10:20,vlan模式使用该参数

没有评论:

发表评论