四、配置映像服务 0、OpenStack映像服务使用户能够发现、注册、检索虚拟机映像。用户通过OpenStack映像服务存储虚拟机映像,存储的位置既可以位于简单的Linux文件系统,也可以位于OpenStack对象存储服务Swift中。 OpenStack使用Glance提供映像服务,只需要在控制节点(controller node)上配置映像服务。为了简化配置,在这里将使用Linux文件系统作为映像存储位置,即把虚拟机映像存储在映像服务所在的主机中(即controller),默认的目录是/var/lib/glance/images/。 1、安装映像服务 (1)应用管理用户的环境变量 [iyunv@controller ~]# source admin-openrc.sh (2)安装映像服务glance [iyunv@controller ~]# yum installopenstack-glance python-glanceclient (3)配置数据库的位置 映像服务将映像信息存储在数据库中,这里将使用controller节点上的MySQL数据库服务。数据库用户名为glance,密码为123456。 [iyunv@controller ~]# openstack-config --set/etc/glance/glance-api.conf database connectionmysql://glance:123456@controller/glance [iyunv@controller ~]# openstack-config --set/etc/glance/glance-registry.conf database connection mysql://glance:123456@controller/glance (4)创建数据库用户名glance,密码为123456。 [iyunv@controller ~]# mysql -u root -p Enter password: # 输入数据库用户root的密码123456。 mysql> CREATE DATABASE glance; mysql> GRANT ALL PRIVILEGES ON glance.*TO 'glance'@'localhost' IDENTIFIED BY '123456'; mysql> GRANT ALL PRIVILEGES ON glance.*TO 'glance'@'%' IDENTIFIED BY '123456'; mysql> exit (5)为映像服务创建数据库表 [iyunv@controller ~]# su -s /bin/sh -c"glance-manage db_sync" glance /usr/lib64/python2.6/site-packages/Crypto/Util/number.py:57:PowmInsecureWarning: Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attackvulnerability. _warn("Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attackvulnerability.", PowmInsecureWarning) #安全风险警告,暂忽略。 (6)在Keystone中为映像服务创建用户glance,密码为123456,邮箱为glance@localhost。将该用户关联到租户service,角色为admin。 [iyunv@controller ~]# keystone user-create--name=glance --pass=123456 --email=glance@localhost [iyunv@controller ~]# keystone user-role-add--user=glance --tenant=service --role=admin (7)配置映像服务Glance使用Keystone进行认证,用户glance的密码为123456。 # openstack-config --set/etc/glance/glance-api.conf keystone_authtoken auth_uri http://controller:5000 # openstack-config --set/etc/glance/glance-api.conf keystone_authtoken auth_host controller # openstack-config --set/etc/glance/glance-api.conf keystone_authtoken auth_port 35357 # openstack-config --set/etc/glance/glance-api.conf keystone_authtoken auth_protocol http # openstack-config --set/etc/glance/glance-api.conf keystone_authtoken \ admin_tenant_name service # openstack-config --set/etc/glance/glance-api.conf keystone_authtoken admin_user glance # openstack-config --set/etc/glance/glance-api.conf keystone_authtoken \ admin_password 123456 # openstack-config --set/etc/glance/glance-api.conf paste_deploy flavor keystone # openstack-config --set/etc/glance/glance-registry.conf keystone_authtoken \ auth_uri http://controller:5000 # openstack-config --set/etc/glance/glance-registry.conf keystone_authtoken \ auth_host controller # openstack-config --set/etc/glance/glance-registry.conf keystone_authtoken auth_port 35357 # openstack-config --set/etc/glance/glance-registry.conf keystone_authtoken auth_protocol http # openstack-config --set/etc/glance/glance-registry.conf \ keystone_authtoken admin_tenant_nameservice # openstack-config --set/etc/glance/glance-registry.conf keystone_authtoken admin_user glance # openstack-config --set/etc/glance/glance-registry.conf keystone_authtoken \ admin_password 123456 # openstack-config --set/etc/glance/glance-registry.conf paste_deploy flavor keystone (8)向认证服务Keystone注册映像服务Glance,并创建Endpoint。 [iyunv@controller ~]# keystoneservice-create --name=glance --type=image --description="OpenStack ImageService" [iyunv@controller ~]# keystoneendpoint-create \ > --service-id=$(keystone service-list | awk '/ image / {print $2}') \ > --publicurl=http://controller:9292 \ > --internalurl=http://controller:9292 \ > --adminurl=http://controller:9292 (9)启动glance-api和glance-registry服务并将服务配置为开机自动启动。 [iyunv@controller ~]# serviceopenstack-glance-api start Starting openstack-glance-api: [ OK ] [iyunv@controller ~]# serviceopenstack-glance-registry start Starting openstack-glance-registry: [ OK ] [iyunv@controller ~]# chkconfigopenstack-glance-api on [iyunv@controller ~]# chkconfigopenstack-glance-registry on 2、上传Cirros映像 为了验证映像服务是否安装成功,需要下载并创建至少一个虚拟机映像。Cirros是一个常用于OpenStack部署测试的极小Linux操作系统映像,这里将使用64位版的Cirros Qcow2格式映像。 (1)下载Cirros映像 浏览https://download.cirros-cloud.net/,进入0.3.3目录,下载cirros-0.3.3-x86_64-disk.img文件,大小为12.5MB,使用SFTP或其他方式将文件传输到controller中的/root目录中。 [iyunv@controller ~]# filecirros-0.3.3-x86_64-disk.img cirros-0.3.3-x86_64-disk.img: Qemu Image,Format: Qcow , Version: 2 (3)将Cirros映像上传到Glance映像服务,指定映像名称为cirros-0.3.3-x86_64,映像格式为Qcow2,容器类型为bare,允许所有用户使用此映像。 [iyunv@controller ~]# glance image-create--name "cirros-0.3.3-x86_64" --disk-format qcow2 --container-formatbare --is-public True --progress < cirros-0.3.3-x86_64-disk.img (4)确认映像是否上传成功 [iyunv@controller ~]# glance image-list 3、上传CentOS映像 Cirros只能用于测试OpenStack环境,通常不能满足云服务器的需求。很多Linux发行版都提供了适用于OpenStack云的映像,以下为常用的云映像下载地址。 CentOS 6:http://cloud.centos.org/centos/6/images/ CentOS 7:http://cloud.centos.org/centos/7/images/ Ubuntu:http://cloud-images.ubuntu.com/ RHEL 6:https://rhn.redhat.com/rhn/software/channel/downloads/Download.do?cid=16952 RHEL 7:https://access.redhat.com/downloads/content/69/ver=/rhel---7/7.0/x86_64/product-downloads Fedora:https://getfedora.org/en/cloud/download/ Debian:http://cdimage.debian.org/cdimage/openstack/ 这里将使用CentOS 6映像。 (1) 下载CentOS 6映像下载页面中的CentOS-6-x86_64-GenericCloud-20141129_01.qcow2文件,大小为1.07GB,使用SFTP或其他方式将文件传输到controller中的/root目录中。 (2)使用file命令查看文件格式,确定映像格式为Qcow2。 [iyunv@controller ~]# fileCentOS-6-x86_64-GenericCloud-20141129_01.qcow2 CentOS-6-x86_64-GenericCloud-20141129_01.qcow2:Qemu Image, Format: Qcow , Version: 2 (3)将CentOS映像上传到Glance映像服务,指定映像名称为CentOS-6.6-x86_64,映像格式为Qcow2,容器类型为bare,允许所有用户使用此映像。 [iyunv@controller ~]# glance image-create--name CentOS-6.6-x86_64 --disk-format qcow2 --container-format bare--is-public True --file CentOS-6-x86_64-GenericCloud-20141129_01.qcow2 (4)确认映像是否上传成功 [iyunv@controller ~]# glance image-list 五、配置计算服务 0、计算服务是IaaS云计算系统的核心部分,用来运行和管理云操作系统。计算服务通过认证服务实现身份验证,通过映像服务获取云操作系统映像,通过Dashboard实现用户的Web接口。计算服务可以使用标准硬件实现水平方向扩展,根据需求下载映像并启动虚拟机实例。 OpenStack使用Nova提供计算服务,Nova包含多个组件,使用户可以启动虚拟机实例。既可以将所有计算服务组件安装在同一个节点上,也可以分别安装在不同的节点。在这里,将把计算服务的多数组件安装在控制节点上,把用来启动虚拟机的组件安装在计算节点上。 1、在控制节点上安装计算服务 (1)应用管理用户的环境变量 [iyunv@controller ~]# source admin-openrc.sh (2)安装控制节点所需要的计算服务组件 [iyunv@controller ~]# yum installopenstack-nova-api openstack-nova-cert openstack-nova-conductoropenstack-nova-console openstack-nova-novncproxy openstack-nova-schedulerpython-novaclient (3)配置数据库的位置 计算服务将信息存储在数据库中,这里将使用controller节点上的MySQL数据库服务。数据库用户名为nova,密码为123456。 [iyunv@controller ~]# openstack-config --set/etc/nova/nova.conf database connection mysql://nova:123456@controller/nova (4)配置计算服务使用Qpid消息代理 [iyunv@controller ~]# openstack-config --set/etc/nova/nova.conf DEFAULT rpc_backend qpid [iyunv@controller ~]# openstack-config --set/etc/nova/nova.conf DEFAULT qpid_hostname controller (5)将my_ip、vncserver_listen和vncserver_proxyclient_address选项设置为控制节点管理接口(eth0)的IP地址192.168.8.11。 [iyunv@controller ~]# openstack-config --set/etc/nova/nova.conf DEFAULT my_ip 192.168.8.11 [iyunv@controller ~]# openstack-config --set/etc/nova/nova.conf DEFAULT vncserver_listen 192.168.8.11 [iyunv@controller ~]# openstack-config --set/etc/nova/nova.conf DEFAULT vncserver_proxyclient_address 192.168.96.11 (6)创建数据库用户名nova,密码为123456。 [iyunv@controller ~]# mysql -u root -p Enter password: # 输入数据库用户root的密码123456 mysql> CREATE DATABASE nova; mysql> GRANT ALL PRIVILEGES ON nova.* TO'nova'@'localhost' IDENTIFIED BY '123456'; mysql> GRANT ALL PRIVILEGES ON nova.* TO'nova'@'%' IDENTIFIED BY '123456'; mysql> exit (7)为计算服务创建数据库表 [iyunv@controller ~]# su -s /bin/sh -c"nova-manage db sync" nova (8)在Keystone中为计算服务创建用户nova,密码为123456,邮箱为nova@localhost。将该用户关联到租户service,角色为admin。 [iyunv@controller ~]# keystone user-create--name=nova --pass=123456 --email=nova@localhost [iyunv@controller ~]# keystone user-role-add--user=nova --tenant=service --role=admin (9)配置计算服务Nova使用Keystone进行认证,用户nova的密码为123456。 # openstack-config --set/etc/nova/nova.conf DEFAULT auth_strategy keystone # openstack-config --set/etc/nova/nova.conf keystone_authtoken \ auth_uri http://controller:5000 # openstack-config --set/etc/nova/nova.conf keystone_authtoken auth_host controller # openstack-config --set/etc/nova/nova.conf keystone_authtoken auth_protocol http # openstack-config --set/etc/nova/nova.conf keystone_authtoken auth_port 35357 # openstack-config --set/etc/nova/nova.conf keystone_authtoken admin_user nova # openstack-config --set/etc/nova/nova.conf keystone_authtoken admin_tenant_name service # openstack-config --set/etc/nova/nova.conf keystone_authtoken admin_password 123456 (10)向认证服务Keystone注册计算服务Nova,并创建Endpoint。 [iyunv@controller ~]# keystoneservice-create --name=nova --type=compute --description="OpenStackCompute" [iyunv@controller ~]# keystoneendpoint-create \ > --service-id=$(keystone service-list | awk '/ compute / {print $2}') \ > --publicurl=http://controller:8774/v2/%\(tenant_id\)s \ > --internalurl=http://controller:8774/v2/%\(tenant_id\)s \ > --adminurl=http://controller:8774/v2/%\(tenant_id\)s (11)启动计算服务并将服务配置为开机自动启动 [iyunv@controller ~]# serviceopenstack-nova-api start Starting openstack-nova-api: [ OK ] [iyunv@controller ~]# serviceopenstack-nova-cert start Starting openstack-nova-cert: [ OK ] [iyunv@controller ~]# serviceopenstack-nova-consoleauth start Starting openstack-nova-consoleauth: [ OK ] [iyunv@controller ~]# serviceopenstack-nova-scheduler start Starting openstack-nova-scheduler: [ OK ] [iyunv@controller ~]# serviceopenstack-nova-conductor start Starting openstack-nova-conductor: [ OK ] [iyunv@controller ~]# serviceopenstack-nova-novncproxy start Starting openstack-nova-novncproxy: [ OK ] [iyunv@controller ~]# chkconfigopenstack-nova-api on [iyunv@controller ~]# chkconfigopenstack-nova-cert on [iyunv@controller ~]# chkconfigopenstack-nova-consoleauth on [iyunv@controller ~]# chkconfigopenstack-nova-scheduler on [iyunv@controller ~]# chkconfigopenstack-nova-conductor on [iyunv@controller ~]# chkconfigopenstack-nova-novncproxy on (12)验证Nova安装 [iyunv@controller ~]# nova image-list 2、在计算节点上安装计算服务 计算节点根据从控制节点接收的请求运行虚拟机,计算服务依靠虚拟化引擎运行虚拟机,OpenStack可以使用多种虚拟化引擎,这里使用Linux KVM。 (1)安装计算服务 [iyunv@compute ~]# yum installopenstack-nova-compute (2)为Nova配置数据库的位置,并配置Nova使用Keystone进行认证。其中数据库用户nova以及认证服务中nova用户的密码都是123456。 # openstack-config --set/etc/nova/nova.conf database \ connectionmysql://nova:123456@controller/nova # openstack-config --set/etc/nova/nova.conf DEFAULT auth_strategy keystone # openstack-config --set/etc/nova/nova.conf keystone_authtoken \ auth_uri http://controller:5000 # openstack-config --set/etc/nova/nova.conf keystone_authtoken auth_host controller # openstack-config --set/etc/nova/nova.conf keystone_authtoken auth_protocol http # openstack-config --set/etc/nova/nova.conf keystone_authtoken auth_port 35357 # openstack-config --set/etc/nova/nova.conf keystone_authtoken admin_user nova # openstack-config --set/etc/nova/nova.conf keystone_authtoken admin_tenant_name service # openstack-config --set/etc/nova/nova.conf keystone_authtoken admin_password 123456 (3)配置计算服务使用控制节点的Qpid消息代理 [iyunv@compute ~]# openstack-config --set/etc/nova/nova.conf DEFAULT rpc_backend qpid [iyunv@compute ~]# openstack-config --set/etc/nova/nova.conf DEFAULT qpid_hostname controller (4)配置计算服务提供到虚拟机实例的远程控制台访问,其中192.168.8.22是计算节点管理网络接口(eth0)的IP地址。 [iyunv@compute ~]# openstack-config --set/etc/nova/nova.conf DEFAULT my_ip 192.168.8.22 [iyunv@compute ~]# openstack-config --set/etc/nova/nova.conf DEFAULT vnc_enabled True [iyunv@compute ~]# openstack-config --set/etc/nova/nova.conf DEFAULT vncserver_listen 0.0.0.0 [iyunv@compute ~]# openstack-config --set/etc/nova/nova.conf DEFAULT \ vncserver_proxyclient_address 192.168.8.22 [iyunv@compute ~]# openstack-config --set/etc/nova/nova.conf DEFAULT novncproxy_base_url http://controller:6080/vnc_auto.html (5)指定运行映像服务的节点(即控制节点) [iyunv@compute ~]# openstack-config --set/etc/nova/nova.conf DEFAULT glance_host controller (6)判断计算节点是否支持CPU虚拟化 [iyunv@compute ~]# egrep -c '(vmx|svm)'/proc/cpuinfo 4 如果该命令返回大于或等于1的数字,表示计算节点支持CPU虚拟化。如果该命令返回的数字为0,表示计算节点不支持CPU虚拟化,需要更换为其他主机。 (7)启动计算服务及其依赖的服务并将服务配置为开机自动启动 [iyunv@compute ~]# service libvirtd start Starting libvirtd daemon: [ OK ] [iyunv@compute ~]# service messagebus start Starting system message bus: [ OK ] [iyunv@compute ~]# serviceopenstack-nova-compute start Starting openstack-nova-compute: [ OK ] [iyunv@compute ~]# chkconfig libvirtd on [iyunv@compute ~]# chkconfig messagebus on [iyunv@compute ~]# chkconfigopenstack-nova-compute on
|