本节书摘来自华章出版社《OpenStack实战指南》一 书中的第2章,第2.1节,作者:黄 凯 毛伟杰 顾骏杰 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2.1.2 网络节点的安装
网络节点主要负责虚拟机的网络控制,包括DHCP、虚拟路由、公网访问虚拟机等。通过软件网桥等方式控制虚拟机的网络,代替传统环境中所需要的交换机、路由器等。在这个测试案例中,使用Open vSwitch作为底层的网络驱动。
1.?系统环境准备
操作系统仍旧使用Ubuntu 12.04 LTS。网络节点需要三个网口,分别连接network-1、network-2、network-3,前两个网络在控制节点安装的时候定义过,而network-3是个新网络,是个私有的网络,IP网段自定义,它需要和所有的计算节点通信,因此,可以和计算节点连在一个交换机上或者VLAN中。
(1)网络IP设置
eth0在前面定义的network-1网络中,这个网络连接Internet。计算节点中的虚拟机出入Internet的流量都从这里经过。
eth1在前面定义的network-2网络中。这个接入管理网络的网口主要负责和controller之间的组件通信,包括所有的数据库连接、RabbitMQ等。
eth2在新定义的网络中,命名为network-3。这个网络和所有的计算节点连接,用于Open vSwitch的GRE隧道,使得虚拟机能和网络节点通信。代码如下:
# cat /etc/network/interfaces
# network-1 Internet
auto eth0
iface eth0 inet static
address 10.10.101.11
netmask 255.255.252.0
network 10.10.100.0
broadcast 10.10.103..255
gateway 10.10.100.1
dns-nameservers 8.8.8.8
# network-2 Management
auto eth1
iface eth1 inet static
address 10.80.80.11
netmask 255.255.255.0
# network-3 vm
auto eth2
iface eth2 inet static
address 10.10.50.1
network 255.255.255.0
重启网络,命令如下:
# /etc/init.d/networking restart
(2)添加Havana的源
添加Havana的源,代码如下:
# apt-get install -y python-software-properties
# add-apt-repository cloud-archive:havana
# apt-get update -y
# apt-get upgrade -y
# apt-get dist-upgrade -y
更新完系统之后,可以根据实际情况重启服务器。
(3)同步时间
同步时间的命令如下:
# apt-get install -y ntp
# vi /etc/ntp.conf
编辑ntp.conf,在控制节点的IP中加入下面的一行,并且放在所有“server ntp服务器域名”的行之前,或者删除其他关于server ntp服务器的行。
server 10.80.80.10
重启NTP服务,命令如下:
# service ntp restart
打开IP转发的功能,因为网络节点需要把从vm网络来的数据包转发到Internet,其代码如下。
# sysctl net.ipv4.ip_forward=1
写入配置文件,使得重启后仍旧生效,命令如下。
# vi /etc/sysctl.coof
net.ipv4.ip_forward = 1
2.?安装Open vSwitch和Neutron
由于采用Open vSwitch作为Neutron的plugin来实现底层的网络虚拟化,因此需要安装Open vSwitch。在Open vSwitch中添加两个虚拟网络交换机:br-int、br-ex,其代码如下:
# apt-get install -y openvswitch-switch openvswitch-datapath-dkms
# ovs-vsctl add-br br-int
# ovs-vsctl add-br br-ex
在网络节点,需要安装Neutron的大部分组件,这里安装openvswitch-plugin的agent,负责neutron server和plugin之间的相互联系,dhcp-agent负责虚拟网络的DHCP,l3-agent负责虚拟网络的路由和外部连接,另外,还有metadata-agent,其代码如下。
neutron-plugin-openvswitch-agent
neutron-dhcp-agent
neutron-l3-agent
neutron-metadata-agent
# apt-get -y install neutron-plugin-openvswitch-agent neutron-dhcp-agent
neutron-l3-agent neutron-metadata-agent
3.?配置Neutron的agent
1)全局配置,代码如下:
# vi /etc/neutron/neutron.conf
[DEFAULT]
debug = True
verbose = True
rabbit_host = 10.80.80.10
# 如果修改过rabbit的guest密码,则一定要修改下面一行
rabbit_password = guest
2)Open vSwitch的plugin配置文件,代码如下:
# vi /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini
[OVS]
tenant_network_type = gre
enable_tunneling = True
tunnel_type = gre
tunnel_id_ranges = 1:1000
integration_bridge = br-int
tunnel_bridge = br-tun
local_ip = 10.10.50.1
[securitygroup]
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
[database]
connection = mysql://neutronuser:openstack@10.80.80.10/neutron
重启服务,命令如下:
# service neutron-plugin-openvswitch-agent restart
3)对metadata-agent进行配置,命令如下:
# vi /etc/neutron/metadata_agent.ini
[DEFAULT]
debug = True
auth_url = http://10.80.80.10:5000/v2.0
auth_region必须和Keystone中Neutron服务的endpoint一致,默认配置文件里是RegionOne,而Keystone建立endpoint时如果不命名,默认是regionOne,这一个大小写问题曾经让笔者在研究metadata上花了一个下午的时间。
auth_region = regionOne
admin_tenant_name = service
admin_user = neutron
admin_password = openstack
nova_metadata_ip = 10.80.80.10
nova_metadata_port = 8775
metadata_proxy_shared_secret = openstack
重启服务,命令如下:
# service neutron-metadata-agent restart
4)对dhcp-agent进行配置,命令如下:
# vi
[DEFAULT]
debug = True
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_metadata_network = True
重启服务,命令如下:
# service neutron-dhcp-agent restart
5)对l3-agent进行配置,命令如下:
# vi
[DEFAULT]
debug = True
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
external_network_bridge = br-ex
重启服务,命令如下:
# service neutron-l3-agent restart
使用“neutron agent-list”命令可以验证目前的Neutron服务。记住,运行命令前必须先导入用户凭证。
4.?设置br-ex虚拟网络
前面已经创建了一个br-ex的虚拟交换机,使用命令ifconfig可以看到这个网口。这个虚拟网络是在l3-agent的配置里设置的,简单来说,是用于虚拟机和Internet之间通信的,因此,需要把网络节点上连接Internet的eth0接入到这个br-ex的虚拟交换机上。
运行下面这条命令后, eth0网络会断掉,需确保在配置的时候是通过管理网络接入的,或者是直接在console上执行的。
# ovs-vsctl add-port br-ex eth0
在/etc/network/interfaces中把eth0的网络配置进行修改,如下所示:
auto eth0
iface eth0 inet manual
up ifconfig $IFACE 0.0.0.0 up
up ip link set $IFACE promisc on
down ip link set $IFACE promisc off
down ifconfig $IFACE down
如果需要让网络节点配置一个可以从这个网络访问的地址,那么可以把原来的eth0的地址配置在br-ex网口上。