OpenStack 高可用性解决方案手动安装指南(四)

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 安装

在所有控制节点上安装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

4.7.8Nova安装

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安装

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.8Compute节点安装

在安装开始前确保你已经完成了所有节点的通用安装,在compute01, compute02 和compute03计算节点上执行

如下安装步骤。

4.8.1升级客户端库(Client Libraries)

为了支持 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安装

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

4.9配置OpenStack的网络(Quantum)并部署第一台虚拟机

从一个计算节点或一个控制节点运行以下命令。如果某个特殊的节点上有一些工作需要完成,这个节点将

会被调用。

注意:如果你遇到找不到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)

你可能感兴趣的:(OpenStack)