本帖最后由 pig2 于 2014-2-19 18:24 编辑
OpenStack网络配置一直困扰着初学者,这里给大家分享一篇网络配置。
一、OpenStack的网络配置
初接触OpenStack的人,在看了部署文档之后,可能会被Nova-Network,Fix-ip,Floating-ip等概念弄的一头雾水,下面会一一详细道来。
Flat DHCP Network
上图大家可能看的不是很明白,其实OpenStack的nova-network部署可以分成3个网段。公网网段,内网网段和虚拟机网段。公网网段指的是可以直接访问到互联网的网段(但是此IP不一定非要从公司外部也能访问,这里的内外是从OpenStack网络系统出发而不是从公司网络的视角出发,请注意),也就是Floating IP配置的网段,我把它绑定在了Eth0。内网网段指的是OpenStack系统内各服务器之间互联的顶层交换机所划的网段,这里将其设置为192.168.3.X,此网段无需出口,我把它绑定在了Eth1,在公司的网络也就是公网网络是访问不到的。虚拟机网段指的是虚拟机运行时其IP所在的网段,也就是Nova-Network中提到的Fix-IP,由于NOVA底层是采用libvirt,所以OpenStack内部默认将其设置为桥接网络br100,这里将其桥接在内网网络上,也就是Eth1。
在服务器选型的时候,我们已经选择了千兆双网卡的机型。这样公网网段和内网网段就可以绑定到两个不同的网口。有的实验环境中,比如沙克老师的文章将两个公网和内网两个网段都配置在了一个网卡上,在实验环境是可以的,但是生产环境不推荐,因服务器如果和外部网络数据交换量大的时候,会使内部服务如nova-scheduler,nova-volume等服务带来延迟。
我的服务器网络配置
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 10.2.15.3 netmask 255.255.255.0 broadcast 10.2.15.255 gateway 10.2.15.1 dns-nameservers 8.8.8.8 auto eth1 iface eth1 inet static address 192.168.3.1 netmask 255.255.255.0 network 192.168.3.0 broadcast 192.168.3.255
上面提到的Flat DHCP Network是Nova-Network服务的一种模式。另外还有Flat,VLan等,这里就不一一介绍了。Flat DHCP指的是所有虚拟机处在同一个平坦的网段上,且DHCP服务自动为其分配IP。
配置Fixed-IP命令
sudo nova-manage network create private --fixed_range_v4=192.168.3.32/27 -- num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=32
使用此命令,我们可以详细配置虚拟机网段Fixed-IP所在的网段,掩码,桥接网络名称,桥接网络端口等参数.
二、Nova组件安装 这里为大家介绍OpenStack最重要的核心组件,虚拟机管理组件Nova的安装部署。虽然是最重要的组件,但是因为包装的非常完整,所以如果前面的网络配置和KeyStone部署都正确完成的话,Nova组件的安装是非常简单的。 首先安装Nova组件 sudo apt-get install nova-api nova-cert nova-compute nova-compute-kvm nova-doc nova-network nova-objectstore nova-scheduler nova-volume rabbitmq-server novnc nova-consoleauth修改节点的/etc/nova/nova.conf配置文件
--dhcpbridge_flagfile=/etc/nova/nova.conf --dhcpbridge=/usr/bin/nova-dhcpbridge --logdir=/var/log/nova --state_path=/var/lib/nova --lock_path=/var/lock/nova --allow_admin_api=true --use_deprecated_auth=false --auth_strategy=keystone --scheduler_driver=nova.scheduler.simple.SimpleScheduler --s3_host=192.168.3.1 --ec2_host=192.168.3.1 --rabbit_host=192.168.3.1 --cc_host=192.168.3.1 --nova_url=http://192.168.3.1:8774/v1.1/ --routing_source_ip=192.168.3.1 --glance_api_servers=192.168.3.1:9292 --image_service=nova.image.glance.GlanceImageService --iscsi_ip_prefix=192.168.4 --sql_connection=mysql://novadbadmin:novasecret@192.168.3.1/nova --ec2_url=http://192.168.3.1:8773/services/Cloud --keystone_ec2_url=http://192.168.3.1:5000/v2.0/ec2tokens --api_paste_config=/etc/nova/api-paste.ini --libvirt_type=kvm --libvirt_use_virtio_for_bridges=true --start_guests_on_host_boot=true --resume_guests_state_on_host_boot=true # VNC specific configuration --novnc_enabled=true --novncproxy_base_url=http://10.2.15.3:6080/vnc_auto.html --vncserver_proxyclient_address=10.2.15.3 --vncserver_listen=10.2.15.3 # network specific settings --network_manager=nova.network.manager.FlatDHCPManager --public_interface=eth0 --flat_interface=eth1 --flat_network_bridge=br100 --fixed_range=192.168.4.1/27 --floating_range=10.2.15.254/25 --network_size=32 --flat_network_dhcp_start=192.168.4.33 --flat_injected=False --force_dhcp_release --iscsi_helper=tgtadm --connection_type=libvirt --root_helper=sudo nova-rootwrap --verbose
配置文件中需要注意的是各服务访问的IP地址,OpenStack多节点部署(三)——网络配置中介绍过,我的控制节点有两个IP,一个是OpenStack系统内网IP 192.168.3.1,另一个是公司内部可访问Internet的IP 10.2.15.3。这里推荐将服务IP写成内网IP 192.168.3.1,这样如果控制节点搬迁,或者公司10网段IP变更,那么我们的配置文件可以不动。 但是要注意的是 --novncproxy_base_url=http://10.2.15.3:6080/vnc_auto.html --vncserver_proxyclient_address=10.2.15.3
这两个VNC参数的IP要为公司内部网络10网段的IP,因为这个必须是从服务器系统外围能访问的IP。
之后为Nova-volume服务创建独立的逻辑卷
sudo pvcreate /dev/sda6
这里将/dev/sda6为你之前格式化为LVM的分区 创建名为nova-volumes的卷组
sudo vgcreate nova-volumes /dev/sda6修改配置文件权限 sudo chown -R nova:nova /etc/nova sudo chmod 644 /etc/nova/nova.conf修改/etc/nova/api-paste.ini,填写nova服务在keystone注册的用户名密码 sed -i '/admin_tenant_name/ s/%SERVICE_TENANT_NAME%/service/' /etc/nova/api-paste.ini sed -i '/admin_user/ s/%SERVICE_USER%/nova/' /etc/nova/api-paste.ini sed -i '/admin_password/ s/%SERVICE_PASSWORD%/nova/' /etc/nova/api-paste.ini同步数据库
sudo nova-manage db sync创建虚拟机所在的Fixed_ip的ip地址段
sudo nova-manage network create private --fixed_range_v4=192.168.4.32/27 --num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=32192.168.4.32/27表示IP段从32开始,并且子网掩码为前27位为1
写入环境变量
export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=admin export OS_AUTH_URL="http://192.168.3.1:5000/v2.0/"最后重启各服务
sudo restart libvirt-bin; sudo restart nova-network; sudo restart nova-compute; sudo restart nova-api; sudo restart nova-objectstore; sudo restart nova-scheduler; sudo restart nova-volume; sudo restart nova-consoleauth;
再增加计算节点只需要安装nova-compute
sudo apt-get install nova-compute修改计算节点的配置文件
--dhcpbridge_flagfile=/etc/nova/nova.conf --dhcpbridge=/usr/bin/nova-dhcpbridge --logdir=/var/log/nova --state_path=/var/lib/nova --lock_path=/run/lock/nova --allow_admin_api=true --use_deprecated_auth=false --auth_strategy=keystone --scheduler_driver=nova.scheduler.simple.SimpleScheduler --s3_host=192.168.3.1 --ec2_host=192.168.3.1 --rabbit_host=192.168.3.1 --cc_host=192.168.3.1 --nova_url=http://192.168.3.1:8774/v1.1/ --routing_source_ip=192.168.3.1 --glance_api_servers=192.168.3.1:9292 --image_service=nova.image.glance.GlanceImageService --iscsi_ip_prefix=192.168.4 --sql_connection=mysql://novadbadmin:novasecret@192.168.3.1/nova --ec2_url=http://192.168.3.1:8773/services/Cloud --keystone_ec2_url=http://192.168.3.1:5000/v2.0/ec2tokens --api_paste_config=/etc/nova/api-paste.ini --libvirt_type=kvm --libvirt_use_virtio_for_bridges=true --start_guests_on_host_boot=true --resume_guests_state_on_host_boot=true # vnc specific configuration --novnc_enabled=true --novncproxy_base_url=http://10.2.15.3:6080/vnc_auto.html --vncserver_proxyclient_address=10.2.15.4 --vncserver_listen=10.2.15.4 # network specific settings --network_manager=nova.network.manager.FlatDHCPManager --public_interface=eth0 --flat_interface=eth1 --flat_network_bridge=br100 --fixed_range=192.168.4.1/27 --floating_range=10.2.15.4/27 --network_size=32 --flat_network_dhcp_start=192.168.4.33 --flat_injected=False --force_dhcp_release --iscsi_helper=tgtadm --connection_type=libvirt --root_helper=sudo nova-rootwrap --verbose各计算节点间配置文件的不同点只有
--novncproxy_base_url=http://10.2.15.3:6080/vnc_auto.html --vncserver_proxyclient_address=10.2.15.4其IP为计算节点的IP 最后,查看是否各服务安装成功,各计算节点是否正常
sudo nova-manage service list
|