OpenStack 高可用性解决方案手动安装指南(四)
4.7.6Glance 安装
在所有控制节点安装Glance API和注册包:
apt-get install -y glance-api glance-registry
删除创建在/var/lib/glance/目录的glance.sqlite文件:
rm /var/lib/glance/glance.sqlite
为Glance创建一个MySQL数据库。这个数据库仅仅需要创建在一个控制节点上:
mysql
CREATE DATABASE glance;
GRANT ALL ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance_pass';
GRANT ALL ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance_pass';
quit;
按如下内容编辑/etc/glance/glance-api.conf文件,用控制节点的管理IP地址(即control01: bind_host
= 192.168.220.41)
替换[CONTROLLER_MGT_IP],确保在每个控制节点都做了更改:
[DEFAULT]
verbose = True
default_store = swift
bind_host = [CONTROLLER_MGT_IP]
sql_connection=mysql://glance:[email protected]/glance
sql_idle_timeout = 30
registry_host = 192.168.220.40
swift_store_auth_address = http://192.168.220.40:5000/v2.0/
swift_store_user = services:swift
swift_store_key = keystone_admin
swift_store_container = glance
swift_store_create_container_on_put = True
[keystone_authtoken]
auth_host = 192.168.220.40
auth_port = 35357
auth_protocol = http
admin_tenant_name = services
admin_user = glance
admin_password = keystone_admin
[paste_deploy]
flavor=keystone+cachemanagement
按如下内容编辑/etc/glance/glance-registry.conf文件,用控制节点的管理IP地址(即control01: bind_host =
192.168.220.41)替换[CONTROLLER_MGT_IP],确保在每个控制节点都做了更改:
[DEFAULT]
verbose = True
bind_host = [CONTROLLER_MGT_IP]
sql_connection=mysql://glance:[email protected]/glance
sql_idle_timeout = 30
[keystone_authtoken]
auth_host = 192.168.220.40
auth_port = 35357
auth_protocol = http
admin_tenant_name = services
admin_user = glance
admin_password = keystone_admin
[paste_deploy]
flavor=keystone
重启glance-api 和 glance-registry服务:
service glance-api restart; service glance-registry restart
数据库的数据表纳入了版本控制,在新的安装中你可以使用以下命令来保护镜像服务免受升级过程中可
能的破坏,这些命令只在一个控制节点上使用:
glance-manage version_control 0
在一个控制节点上同步glance的数据库(你可能得到一个关于被抛弃的信息————你可以忽略):
glance-manage db_sync
再次重新启动服务,使新的修改生效:、
service glance-registry restart; service glance-api restart
下载Cirros 0.3.1云端镜像(cloud image)到一个控制节点,然后上传到Glance。
wget http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img
glance add name="cirros" is_public=true disk_format=qcow2 container_format=ovf < cirros-0.3.1-x86_64-disk.img
验证Glance在为这个镜像服务:
glance image-list
当然,你也可以添加Ubuntu precise镜像到Glance:
wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img
glance add name="precise" is_public=true container_format=ovf disk_format=qcow2 < precise-server-cloudimg-amd64-disk1.img
4.7.7Quantum 安装
4.7.8Nova安装在所有控制节点上安装Quantum服务:
apt-get install -y quantum-server quantum-plugin-openvswitch
只在一个节点上创建Quantum的数据库:
mysql
CREATE DATABASE quantum;
GRANT ALL ON quantum.* TO 'quantum'@'%' IDENTIFIED BY 'quantum_pass';
GRANT ALL ON quantum.* TO 'quantum'@'localhost' IDENTIFIED BY 'quantum_pass';
quit;
在所有控制节点上编辑/etc/quantum/quantum.conf文件。用控制节点的管理IP地址(即control01: bind_host
= 192.168.220.41)替换[CONTROLLER_MGT_IP]:
[DEFAULT]
bind_host = [CONTROLLER_MGT_IP]
rabbit_userid=openstack_rabbit_user
rabbit_password=openstack_rabbit_password
rabbit_ha_queues=True
rabbit_hosts=control01:5672,control02:5672,control03:5672
verbose = True
log_file=/var/log/quantum/server.log
[keystone_authtoken]
auth_host = 192.168.220.40
auth_port = 35357
auth_protocol = http
admin_tenant_name = services
admin_user = quantum
admin_password = keystone_admin
signing_dir = /var/lib/quantum/keystone-signing
在所有控制节点上编辑OVS插件的配置文件/etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini:
[DATABASE]
sql_connection=mysql://quantum:[email protected]/quantum
sql_idle_timeout = 30
[OVS]
network_vlan_ranges = physnet1
bridge_mappings = physnet1:br-ex
[SECURITYGROUP]
firewall_driver = quantum.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
重启quantum服务:
service quantum-server restart
Nova的安装从在所有控制节点上安装Nova软件包开始:
apt-get install -y nova-api nova-conductor nova-consoleauth nova-scheduler nova-novncproxy
只在一节点上创建Nova的数据库:
mysql
CREATE DATABASE nova;
GRANT ALL ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova_pass';
GRANT ALL ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova_pass';
quit;
修改/etc/nova/api-paste.ini文件中认证令牌的部分,使其包含如下内容:
[filter:authtoken]
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
auth_host = 192.168.220.40
auth_port = 35357
auth_protocol = http
admin_tenant_name = services
admin_user = nova
admin_password = keystone_admin
signing_dir = /tmp/keystone-signing-nova
# Workaround for https://bugs.launchpad.net/nova/+bug/1154809
auth_version = v2.0
用以下内容编辑/etc/nova/nova.conf文件,用控制节点的IP地址(如:control01 = 192.168.220.41)替换
[CONTROLLER_MGT_IP],在每个节点重复这一步骤:
[DEFAULT]
sql_idle_timeout=30
network_api_class=nova.network.quantumv2.api.API
quantum_url=http://192.168.220.40:9696
quantum_admin_auth_url=http://192.168.220.40:35357/v2.0
quantum_auth_strategy=keystone
quantum_admin_tenant_name=services
quantum_admin_username=quantum
quantum_admin_password=keystone_admin
firewall_driver=nova.virt.firewall.NoopFirewallDriver
service_quantum_metadata_proxy=true
quantum_metadata_proxy_shared_secret=quantum_proxy_secret
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
iscsi_helper=tgtadm
libvirt_use_virtio_for_bridges=True
verbose=true
ec2_private_dns_show_ip=True
api_paste_config=/etc/nova/api-paste.ini
image_service=nova.image.glance.GlanceImageService
rpc_backend=nova.rpc.impl_kombu
rabbit_ha_queues=True
rabbit_hosts=control01:5672,control02:5672,control03:5672
glance_api_servers=192.168.220.40:9292
service_down_time=60
rabbit_port=5672
rabbit_virtual_host=/
sql_connection=mysql://nova:[email protected]/nova
memcached_servers=192.168.220.41:11211,192.168.220.42:11211,192.168.220.43:11211
rabbit_userid=openstack_rabbit_user
rabbit_password=openstack_rabbit_password
metadata_listen=[CONTROLLER_MGT_IP]
ec2_listen=[CONTROLLER_MGT_IP]
enabled_apis=ec2,osapi_compute,metadata
osapi_compute_listen=[CONTROLLER_MGT_IP]
volume_api_class=nova.volume.cinder.API
auth_strategy=keystone
rootwrap_config= /etc/nova/rootwrap.conf
novncproxy_port=6080
novncproxy_host=0.0.0.0
novncproxy_base_url=http://192.168.220.40:6080/vnc_auto.html
novncproxy_host=[CONTROLLER_MGT_IP]
注意:在我们的例子中的nova.conf允许verbose登录,在实用环境下,你可能想要去修改以禁止verbose登录。
只在一个控制节点上同步Nova的数据库(你可能会收到一个DEBUG信息———你可以忽略这个信息):
nova-manage db sync
由于OpenStack的1158958BUG(详见:https://bugs.launchpad.net/nova/+bug/1158958),NovaAPI必须通过打补丁来支
持memcached而不是采用in-process cache(memcached是一个高性能的分布式内存对象缓存系统,用于动态Web
应用以减轻数据库负载。in-process cache:因为对象的创建和销毁会耗费时间,将这些对象保存在处理过程中的
内存中,这样避免频繁的创建和销毁)。首先,通过检索需要打补丁的文件(extended_availability_zone.py)来
查看Nova是否需要打补丁。如果文件需要补丁,你将收不到任何输出信息,如果文件不要补丁,你将会收
到 host= str(instance.get('host')):
grep "str(instance.get('host'))" /usr/lib/python2.7/dist-packages/nova/api/openstack/compute/contrib/extended_availability_zone.py
如果extended_availability_zone.py需要补丁,下载补丁文件:
wget https://raw.github.com/dflorea/nova/grizzly/nova/api/openstack/compute/contrib/extended_availability_zone.py
复制升级补丁后的patched extended_availability_zone.py文件到/usr/lib/python2.7/dist-packages/nova/api
/openstack/compute/contrib/目录:
cp extended_availability_zone.py /usr/lib/python2.7/dist-packages/nova/api/openstack/compute/contrib/extended_availability_zone.py
确保这个文件的所有者是root:root
ls -l /usr/lib/python2.7/dist-packages/nova/api/openstack/compute/contrib/extended_availability_zone.py
如果 extended_availability_zone.py文件的所有者不是root,更改文件的所有权:
chmod root:root /usr/lib/python2.7/dist-packages/nova/api/openstack/compute/contrib/extended_availability_zone.py
由于一个与OpenStack的1158958BUG相似的BUG存在,NovaAPI必须通过打补丁来支持memcached而不是采用
in-process cache.编辑/usr/lib/python2.7/dist-packages/nova/api/ec2/ec2utils.py文件,在
key= "%s:%s" % (func.__name__, reqid)之后添加下面这行:
key = str(key)
注意:新的这行应该放到第45行,确保在修改前和添加这行之后间距仍然是一样的。
在所有控制节点上重启nova-*服务:
cd /etc/init.d/; for i in $( ls nova-* ); do sudo service $i restart; done
检查nova服务的笑脸(表示服务正常运行的标志)确保安装正确:
nova-manage service list
也要检查nova-api正在运行:
service nova-api status
4.7.9Cinder安装
Cinder的安装从在所有的控制节点上安装Cinder软件包开始:
apt-get install -y cinder-api cinder-scheduler
在一个控制节点上创建Cinder的MySQL数据库:
mysql
CREATE DATABASE cinder;
GRANT ALL ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder_pass';
GRANT ALL ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder_pass';
quit;
在每个控制节点上编辑/etc/cinder/api-paste.ini 文件:
[filter:authtoken]
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
service_protocol = http
service_host = 192.168.220.40
service_port = 5000
auth_host = 192.168.220.40
auth_port = 35357
auth_protocol = http
admin_tenant_name = services
admin_user = cinder
admin_password = keystone_admin
signing_dir = /var/lib/cinder
在每个控制节点上编辑配置文件/etc/cinder/cinder.conf。注意:默认的卷组从cinder-volumes变成了
nova-volumes。正如手册中关键提醒部分所提及的一样,每个计算(Compute)节点必须有一个名为
nova-volumes的LLVM卷组。
[DEFAULT]
sql_idle_timeout=30
rabbit_ha_queues=True
rabbit_hosts=control01:5672,control02:5672,control03:5672
rabbit_userid=openstack_rabbit_user
rabbit_password=openstack_rabbit_password
sql_connection = mysql://cinder:[email protected]/cinder
osapi_volume_listen = [CONTROLLER_MGT_IP]
rootwrap_config = /etc/cinder/rootwrap.conf
api_paste_confg = /etc/cinder/api-paste.ini
iscsi_helper = tgtadm
volume_name_template = volume-%s
volume_group = nova-volumes
verbose = True
auth_strategy = keystone
state_path = /var/lib/cinder
lock_path = /var/lock/cinder
volumes_dir = /var/lib/cinder/volumes
只在一个控制节点上初始化Cinder的数据库:
cinder-manage db sync
在所有控制节点上重启Cinder服务:
service cinder-api restart; service cinder-scheduler restart
4.7.10Horizon安装
4.8Compute节点安装Horizon的安装从在所有的控制节点上安装Horizon软件包开始:
apt-get install -y memcached libapache2-mod-wsgiOpenStack-dashboard
接下来,修改/etc/openstack-dashboard/local_settings.py文件,用控制节点群集的VIP地址(192.168.220.40)
替代所有默认的loopback接口(即127.0.0.1) 。在/etc/memcached.conf中修改memcached的监听地址,用控制节
点的管理IP地址替换[CONTROLLER_MGT_IP]。
-l [CONTROLLER_MGT_IP]
在每个控制节点重启Apache和memcached服务:
service apache2 restart; service memcached restart
在浏览器中输入下面的URL进入Horizon,使用admin/keystone_admin作为你的登录凭证。如果你通过VIP
(192.168.220.40)进入Horizon时遇到问题,尝试通过一个控制节点的真实IP(即control01 = 192.168.220.41)进入。
http://192.168.220.40/horizon
当然,如果你想删除Ubuntu主题:
apt-get purge -yOpenStack-dashboard-ubuntu-theme
4.8.1升级客户端库(Client Libraries)在安装开始前确保你已经完成了所有节点的通用安装,在compute01, compute02 和compute03计算节点上执行
如下安装步骤。
为了支持 RabbitMQ Mirrored Queues,在安装之前一些客户端的库必须升级。更新需要的客户端库:
apt-get install -y python-pip
pip install kombu==2.4.7
pip install amqp==0.9.4
检查anyjson的版本:
pip freeze | grep anyjson
如果anyjson的版本不是0.3.3,请安装正确的版本(0.3.3):
pip install anyjson==0.3.3
4.8.2Quantum安装
安装Quantum软件包:
apt-get -y install quantum-plugin-openvswitch quantum-plugin-openvswitch-agent quantum-dhcp-agent
检查每个计算节点上的OpenvSwitch服务的状态:
service openvswitch-switch status
如果这些节点上的OpenvSwitch服务没有运行就启动每个节点上的服务:
service openvswitch-switch start
计算节点需要名为"br-int"和"br-ex"的OVS桥,"br-ex"桥和公网接口(在我们的例子中是eth1)相连:
ovs-vsctl add-br br-int
ovs-vsctl add-br br-ex
ovs-vsctl add-port br-ex eth1
按如下内容编辑Quantum的配置文件 /etc/quantum/quantum.conf。注意:确保rabbit_hosts中节点名字的格式
如下:
#Under the default section
[DEFAULT]
rabbit_userid=openstack_rabbit_user
rabbit_password=openstack_rabbit_password
rabbit_ha_queues=True
rabbit_hosts=control01:5672,control02:5672,control03:5672
verbose = True
log_file=/var/log/quantum/server.log
#Under the keystone_authtoken section
[keystone_authtoken]
auth_host = 192.168.220.40
auth_port = 35357
auth_protocol = http
admin_tenant_name = services
admin_user = quantum
admin_password = keystone_admin
signing_dir = /var/lib/quantum/keystone-signing
编辑OVS插件的配置文件/etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini:
#Under the database section
[DATABASE]
sql_idle_timeout = 30
在OVS里添加如下内容。注意:223:225标志着租户使用的VLAN的VLAN ID范围。修改VLAN ID范围根据你的部署
需求。这些VLANs必须中继到计算节点的eth1接口,并且你必须在上层的l-3设备上创建一个网关地址(对于
223VLAN即:192.168.223.1)。
[OVS]
network_vlan_ranges = physnet1:223:225
bridge_mappings = physnet1:br-ex
# Using Quantum Security Groups instead of Nova Security Groups
[SECURITYGROUP]
firewall_driver = quantum.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
更新/etc/quantum/dhcp_agent.ini:
#Under the default section
[DEFAULT]
# Required to run multiple Quantum DHCP agents
use_component_ext = True
# Add root_helper due to bug: https://bugs.launchpad.net/quantum/+bug/1182616
root_helper = sudo quantum-rootwrap /etc/quantum/rootwrap.conf
更新/etc/quantum/metadata_agent.ini:
metadata_proxy_shared_secret = quantum_proxy_secret
在每个控制节点上重启Quantum服务:
service quantum-plugin-openvswitch-agent restart; service quantum-dhcp-agent restart; service quantum-metadata-agent restart
4.8.3Nova安装
Nova的安装从在所有计算节点上安装Nova软件包开始:
apt-get install -y nova-compute
按以下内容编辑/etc/nova/nova.conf文件。用计算节点的管理IP地址(如:compute01 = 192.168.220.51)替换
[COMPUTE_MGT_IP]:
[DEFAULT]
force_config_drive=true
network_api_class=nova.network.quantumv2.api.API
quantum_url=http://192.168.220.40:9696
quantum_admin_auth_url=http://192.168.220.40:35357/v2.0
quantum_auth_strategy=keystone
quantum_admin_tenant_name=services
quantum_admin_username=quantum
quantum_admin_password=keystone_admin
firewall_driver=nova.virt.firewall.NoopFirewallDriver
service_quantum_metadata_proxy=true
quantum_metadata_proxy_shared_secret=quantum_proxy_secret
logdir=/var/log/nova
verbose=true
state_path=/var/lib/nova
lock_path=/var/lock/nova
iscsi_helper=tgtadm
libvirt_use_virtio_for_bridges=True
ec2_private_dns_show_ip=True
api_paste_config=/etc/nova/api-paste.ini
rabbit_ha_queues=True
rabbit_hosts=control01:5672,control02:5672,control03:5672
glance_api_servers=192.168.220.40:9292
sql_connection=mysql://nova:[email protected]/nova
memcached_servers=192.168.220.40:11211
rabbit_userid=openstack_rabbit_user
rabbit_password=openstack_rabbit_password
metadata_host=192.168.220.40
volume_api_class=nova.volume.cinder.API
auth_strategy=keystone
rootwrap_config= /etc/nova/rootwrap.conf
vncserver_proxyclient_address=[COMPUTE_MGT_IP]
novncproxy_base_url=http://192.168.220.40:6080/vnc_auto.html
vncserver_listen=[COMPUTE_MGT_IP]
注意:在我们的例子中的nova.conf允许verbose登录,在实际环境下,你可能想要去修改以禁止verbose登录。
验证/etc/nova/nova-compute.conf和下面的内容相同:
[DEFAULT]
libvirt_type=kvm
compute_driver=libvirt.LibvirtDriver
在每个计算节点上重启 nova-compute服务:
service nova-compute restart
创建一个认证文件以便你可以从计算节点使用OpenStacke的客户端命令:
vi /root/openrc
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=keystone_admin
export OS_AUTH_URL="http://192.168.220.40:5000/v2.0/"
export OS_AUTH_STRATEGY=keystone
export SERVICE_TOKEN=keystone_admin_token
export SERVICE_ENDPOINT=http://192.168.220.40:35357/v2.0/
source /root/openrc
检查nova服务的笑脸(表示服务正常运行的标志)确保安装正确:
nova-manage service list
4.8.4Cinder安装
4.9配置OpenStack的网络(Quantum)并部署第一台虚拟机Cinder安装从在所有的计算节点上安装Cinder的软件包开始:
apt-get install -y cinder-volume
按如下内容编辑/etc/cinder/cinder.conf文件,用计算节点的管理IP地址(如:compute01 = 192.168.220.51)替
换[COMPUTE_MGT_IP]:
[DEFAULT]
iscsi_ip_address=[COMPUTE_MGT_IP]
rabbit_ha_queues=True
rabbit_hosts=control01:5672,control02:5672,control03:5672
rabbit_userid=openstack_rabbit_user
rabbit_password=openstack_rabbit_password
sql_connection = mysql://cinder:[email protected]/cinder
rootwrap_config = /etc/cinder/rootwrap.conf
api_paste_confg = /etc/cinder/api-paste.ini
iscsi_helper = tgtadm
volume_name_template = volume-%s
volume_group = nova-volumes
verbose = True
auth_strategy = keystone
state_path = /var/lib/cinder
lock_path = /var/lock/cinder
volumes_dir = /var/lib/cinder/volumes
在所有计算节点重启Cinder服务:
service cinder-volume restart; service tgt restart
从一个计算节点或一个控制节点运行以下命令。如果某个特殊的节点上有一些工作需要完成,这个节点将
会被调用。
注意:如果你遇到找不到Quantum命令的问题,你可能需要做如下操作:
apt-get install -y python-pip
pip install -U cliff
创建你第一个租户网络。在我们的例子中,我们使用admin租户。根据需要创建附加网络和相关的子网。注意:
创建网络时带“-shared ”参数可以使该网络对所有租户可用。如果你希望这个网络只提供给你openrc文件中设
定的租户,就删除该参数:
keystone tenant-list
quantum net-create public223 --tenant_id admin --provider:network_type vlan --provider:physical_network physnet1 --provider:segmentation_id 223 --shared
创建你第一个租户的子网并连接该子网到上一步所创建的网络。下面的例子使用.10--.250作为实例IP。根据
你部署的需要修改分配池(allocation-pool)和域名服务器:
quantum subnet-create --name 223-subnet --allocation-pool start=192.168.223.10,end=192.168.223.250 public223 192.168.223.0/24 --dns_nameservers list=true 192.168.26.186
如果你之前跳过了下载一个镜像并将其上传到Glance,现在做如下操作:
wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img
glance add name="precise" is_public=true container_format=ovf disk_format=qcow2 < precise-server-cloudimg-amd64-disk1.img
在一个计算节点创建一个SSH密钥对并把公钥添加到Nova。注意:创建密钥对的时候把密码留空。如果你遇到
了找不到Nova命令的问题,你需要安装通过nova客户端来解决:
apt-get -y install python-novaclient
ssh-keygen
cd ~/.ssh/
nova keypair-add --pub_key id_rsa.pub
例如:
nova keypair-add --pub_key id_rsa.pub net-key
启动实例之前,检查我们刚刚创建的网络的ID。注意:
的值从命令"quantum net-list" 的输出中得到: quantum net-list
nova boot --image precise --flavor m1.small --key_name
--nic net-id= 例如:
nova boot --image precise --flavor m1.small --key_name net-key --nic net-id=f9035744-72a9-42cf-bd46-73d54c0cea06 vm1
查看实例的状态:
nova show
例如:
nova show vm1
当OS-EXT-STS:vm_state为“active”时实例就已经完全启动了。留意虚拟机的IP地址,或者你可以通过运行命令查看
虚拟机启动时的完整日志:
nova console-log --length=25 vm1
注意:如果你看到实例日志卡在下面的状态,就要在计算节点上重新启动quantum-dhcp-agent服务并且重新部署
实例:
Starting network...
udhcpc (v1.20.1) started
Sending discover…
编辑Quantum默认的安全组,使得ingress可以和实例通信。
注意:安全组的规则关联到一个特定的租户。 在我们的例子中我们使用admin租户。 下面命令中的租户id应该和
之前quantum创建网络命令中的租户id相匹配。
quantum security-group-rule-create default --direction ingress --ethertype IPv4 --protocol icmp --remote-ip-prefix 0.0.0.0/0 --tenant-id admin
quantum security-group-rule-create default --direction ingress --ethertype IPv4 --protocol tcp --port-range-min 22 --port-range-max 22 --remote-ip-prefix 0.0.0.0/0 --tenant-id admin
这个例子允许所有ICMP和SHH通信:
quantum security-group-rule-create default --direction ingress --ethertype IPv4 --protocol icmp --remote-ip-prefix 0.0.0.0/0 --tenant-id 2fbf0d3f6b914b5e8eb4605355cf2c9b
quantum security-group-rule-create default --direction ingress --ethertype IPv4 --protocol tcp --port-range-min 22 --port-range-max 22 --remote-ip-prefix 0.0.0.0/0 --tenant-id 2fbf0d3f6b914b5e8eb4605355cf2c9b
注意:如果你收到如下信息“Multiple security_group matches found for name 'default', use an ID to be more
specific.”,就用安全组的ID替换缺省的安全组名。安全组的ID可以通过quantum security-group-list命令得到。
你现在应给能够从主机ping通VM和SSH,这台主机是你在启动阶段用来创建和VM相关的密钥的那台。
4.10配置OpenStack 网络(Quantum)DHCP代理高可用
首先,验证你的Quantum 代理的状态。从下图中你应该可以看见:-)(笑脸)在alive列下和True在admin_state_up列下。除非出现
如果输入quantum agent-list命令后的情况和下图不符,不要进行DHCP代理的失效转移测试:
(失效转移(failover)是一种备份操作模式,当主要组件由于失效或预定关机时间的原因而无法工作时,这种模
式中的系统组件,比如处理机、服务器、网络或数据库的功能被转嫁到二级系统组件。对于希望使系统具有更高
的故障容忍力,失效转移是一定会被经常使用的紧急任务系统的主要部分。)
quantum agent-list
+--------------------------------------+--------------------+------------------------+-------+----------------+
| id | agent_type | host | alive | admin_state_up |
+--------------------------------------+--------------------+------------------------+-------+----------------+
| 17538649-c80b-4c82-aedf-67ffca608a5d | DHCP agent | compute03.dmz-pod2.lab | :-) | True |
| 4bc8dac3-ec4a-4369-b1b9-3c0111211d63 | DHCP agent | compute02.dmz-pod2.lab | :-) | True |
| 4f574568-1342-4eea-94ae-96ce7b6af3f1 | Open vSwitch agent | compute01.dmz-pod2.lab | :-) | True |
| 53a44eae-025d-40a5-9505-10d33b3f9779 | DHCP agent | compute01.dmz-pod2.lab | :-) | True |
| 7394b48c-5b1a-459f-95c0-1522c443fa88 | Open vSwitch agent | compute02.dmz-pod2.lab | :-) | True |
| a2f55922-b230-4e8f-8535-30ce59dbbb98 | Open vSwitch agent | compute03.dmz-pod2.lab | :-) | True |
+--------------------------------------+--------------------+------------------------+-------+----------------+
验证哪个DHCP代理正在为Quantum的public223网络服务:
quantum dhcp-agent-list-hosting-net public223
+--------------------------------------+------------------------+----------------+-------+
| id | host | admin_state_up | alive |
+--------------------------------------+------------------------+----------------+-------+
| 4bc8dac3-ec4a-4369-b1b9-3c0111211d63 | compute02.dmz-pod2.lab | True | :-) |
+--------------------------------------+------------------------+----------------+-------+
给public223网络加入另外一个DHCP代理服务(祈使句)。在我们的例子中,Compute01节点上的DHCP代理被添加到
Public223网络。
注:DHCP代理的ID可以在quantum agent-list 命令的输出中获得:
quantum dhcp-agent-network-add 53a44eae-025d-40a5-9505-10d33b3f9779 public223
Added network public223 to DHCP agent
验证在Compute01节点上的DHCP代理已经添加到了public223网络:
root@control01:~# quantum dhcp-agent-list-hosting-net public223
+--------------------------------------+------------------------+----------------+-------+
| id | host | admin_state_up | alive |
+--------------------------------------+------------------------+----------------+-------+
| 4bc8dac3-ec4a-4369-b1b9-3c0111211d63 | compute02.dmz-pod2.lab | True | :-) |
| 53a44eae-025d-40a5-9505-10d33b3f9779 | compute01.dmz-pod2.lab | True | :-) |
+--------------------------------------+------------------------+----------------+-------+
验证你可以成功地启动一个新的实例:
nova boot --image precise --flavor m1.small --key_name
--nic net-id= 例如:
nova boot --image precise --flavor m1.small --key_name net-key --nic net-id=f9035744-72a9-42cf-bd46-73d54c0cea06 vm1
查看实例的状态:
nova show
例如:
nova show vm1
当OS-EXT-STS:vm_state为“active”时实例就已经完全启动了。留意虚拟机的IP地址,或者你可以通过运行命令查看
虚拟机启动时的完整日志:
nova console-log --length=25 vm1
注意:确保你的实例已经收到了一个来自nova的console-log命令的IP地址。通过禁用一个计算节点的DHCP代理
来测试失效转移,我们的例子在Compute02节点上禁用DHCP代理。DHCP代理的ID可以在quantum agent-list 命令的
输出中获得。
quantum agent-update 4bc8dac3-ec4a-4369-b1b9-3c0111211d63 --admin_state_up=false
Updated agent: 4bc8dac3-ec4a-4369-b1b9-3c0111211d63
验证代理是被禁用的。你应该看见与你禁用的DHCP代理对应的admin_state_up是False:
root@control01:~# quantum agent-list
+--------------------------------------+--------------------+------------------------+-------+----------------+
| id | agent_type | host | alive | admin_state_up |
+--------------------------------------+--------------------+------------------------+-------+----------------+
| 17538649-c80b-4c82-aedf-67ffca608a5d | DHCP agent | compute03.dmz-pod2.lab | :-) | True |
| 4bc8dac3-ec4a-4369-b1b9-3c0111211d63 | DHCP agent | compute02.dmz-pod2.lab | :-) | False |
| 4f574568-1342-4eea-94ae-96ce7b6af3f1 | Open vSwitch agent | compute01.dmz-pod2.lab | :-) | True |
| 53a44eae-025d-40a5-9505-10d33b3f9779 | DHCP agent | compute01.dmz-pod2.lab | :-) | True |
| 7394b48c-5b1a-459f-95c0-1522c443fa88 | Open vSwitch agent | compute02.dmz-pod2.lab | :-) | True |
| a2f55922-b230-4e8f-8535-30ce59dbbb98 | Open vSwitch agent | compute03.dmz-pod2.lab | :-) | True |
+--------------------------------------+--------------------+------------------------+-------+----------------+
验证你可以成工地启动一个新实例:
nova boot --image precise --flavor m1.small --key_name
--nic net-id= 例如:
nova boot --image precise --flavor m1.small --key_name net-key --nic net-id=f9035744-72a9-42cf-bd46-73d54c0cea06 vm1
查看实例的状态:
nova show
例如:
nova show vm1
当OS-EXT-STS:vm_state为“active”时实例就已经完全启动了。留意虚拟机的IP地址,或者你可以通过运行命令查看
虚拟机启动时的完整日志:
nova console-log --length=25 vm1
注意:确保你的实例已经收到了一个来自nova的console-log命令的IP地址。
通过禁用一个计算节点DHCP代理来测试失效转移,其他DHCP代理也重复相同的过程。
当失效转移测试完成后,启用所有DHCP代理并且为自动恢复测试重复上面所有步骤。(failback:在簇网络系
统,有两台或多台服务器互联的网络中,由于要某台服务器进行维修,需要网络资源和服务暂时重定向到备
用系统。在此之后将网络资源和服务器恢复为由原始主机提供的过程,称为自动恢复。)
5.支持
Email:[email protected]
6.致谢:
这项工作是基于:
Ubuntu 12.04 (LTS)的OpenStack Grizzly安装指南文档(http://docs.openstack.org/grizzly/openstack-compute
/install/apt/content/)
7.作者
Daneyon Hansen
Shannon McFarland
评分:4.6/5 (8票)
(个人水平有限,错误难免,转载请注明出处:http://blog.csdn.net/bangbanglovetting)