OpenStack、compute组件
一、Compute(Nova)简介1、Nova简介
管理VM的整个生命周期,主要职责包括启动、调度VMs;
Supporting Service:
AMQP:Advanced Messaging Queue Protocol
开源解决方案:Apache Qpid(小规模),RabbitMQ(中,1千个物理节点),ZeroMQ(大),
Database:
2、Nova的组件
API:nova-api,nova-api-metadata
Compute Core:nova-compute,nova-scheduler,nova-conductor
Network for VMs:(用不到,由Netron提供)nova-network,nova-dhcpagent
Console Interface:nova-consoleauth,nova-novncproxy,nova-x***cproxy,nova-cert
Command line and other interfaces:nova,nova-manage
Compute服务的角色:
管理角色:
hypervisor:负责运行虚拟机
二、安装Nova
1、安装消息队列服务
# yum install qpid-cpp-server -y
# rpm -ql qpid-cpp-server
/etc/qpid/qpidd.acl
/etc/qpidd.conf
/etc/rc.d/init.d/qpidd
/etc/sasl2/qpidd.conf
/usr/lib64/libqpidbroker.so.8
/usr/lib64/libqpidbroker.so.8.0.0
/usr/lib64/qpid/daemon
/usr/lib64/qpid/daemon/acl.so
/usr/lib64/qpid/daemon/replicating_listener.so
/usr/lib64/qpid/daemon/replication_exchange.so
/usr/sbin/qpidd
/usr/share/man/man1/qpidd.1.gz
/var/lib/qpidd
/var/lib/qpidd/qpidd.sasldb
/var/run/qpidd 修改qpidd配置文件将auth设置为no:
# vi /etc/qpidd.conf
auth=no 启动qpidd:
# service qpidd start
Starting Qpid AMQP daemon:
# chkconfig qpidd on
# netstat -nlptu|grep qpidd
tcp 0 0 0.0.0.0:5672 0.0.0.0:* LISTEN 6608/qpidd
tcp 0 0 :::5672 :::* LISTEN 6608/qpidd
# chkconfig qpidd on
2、Install Compute Controller Services
1)安装相应的软件包
# yum install openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient 2)创建数据库并授权
mysql> create database nova character set utf8;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on nova.* to 'nova'@'%' identified by 'nova';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on nova.* to 'nova'@'localhost' identified by 'nova';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec) 3)配置/etc/nova/nova.conf
# vi nova.conf
#rpc_backend=rabbit #找到并修改
rpc_backend=qpid
#qpid_hostname=localhost #找到并修改
qpid_hostname=192.168.10.1
#my_ip=10.0.0.1
my_ip=192.168.10.1
#vncserver_listen=127.0.0.1
vncserver_listen=192.168.10.1
# The address to which proxy clients (like nova-xvpvncproxy)
# should connect (string value)
#vncserver_proxyclient_address=127.0.0.1
vncserver_proxyclient_address=192.168.10.1 同步数据库:
# su -s /bin/sh -c "nova-manage db sync" nova #注意db sync没下划线
mysql> use nova
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+--------------------------------------------+
| Tables_in_nova |
+--------------------------------------------+
| agent_builds | 4)创建nova用户
# keystone user-create --name=nova --pass=nova
/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 attack vulnerability.
_warn("Not using mpz_powm_sec.You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning)
+----------+----------------------------------+
| Property | Value |
+----------+----------------------------------+
|email | |
| enabled| True |
| id | b56531230b124b7ebbe1b9e72502a907 |
| name | nova |
| username | nova |
+----------+----------------------------------+
# keystone user-role-add --user=nova --role=admin --tenant=service
/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 attack vulnerability.
_warn("Not using mpz_powm_sec.You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning) 修改配置文件:
# vi nova.conf
#auth_strategy=noauth #找到并修改
auth_strategy=keystone
#
# Options defined in keystoneclient.middleware.auth_token
#
# Prefix to prepend at the beginning of the path (string
# value)
#auth_admin_prefix=
auth_protocol=http
auth_url=http://controller:5000
auth_host=controller
auth_port=35357
auth_user=nova
admin_tenant_name=service
admin_password=nova 5)在keystone中添加glance的service endpoint:
# keystone service-create --name=nova --type=compute \
> --description="OpenStack Compute"
/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 attack vulnerability.
_warn("Not using mpz_powm_sec.You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning)
+-------------+----------------------------------+
| Property| Value |
+-------------+----------------------------------+
| description | OpenStack Compute |
| enabled | True |
| id | e7acbab65f9647e7a3f691f990e43eb5 |
| name | nova |
| type | compute |
+-------------+----------------------------------+
# keystone endpoint-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
/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 attack vulnerability.
_warn("Not using mpz_powm_sec.You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning)
/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 attack vulnerability.
_warn("Not using mpz_powm_sec.You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning)
+-------------+-----------------------------------------+
| Property| Value |
+-------------+-----------------------------------------+
| adminurl| http://controller:8774/v2/%(tenant_id)s |
| id | 990796a3ab404d0f816b6916005c57df |
| internalurl | http://controller:8774/v2/%(tenant_id)s |
|publicurl| http://controller:8774/v2/%(tenant_id)s |
| region | regionOne |
|service_id | e7acbab65f9647e7a3f691f990e43eb5 |
+-------------+-----------------------------------------+ 6)启动nova服务
# service openstack-nova-api start
Starting openstack-nova-api:
# service openstack-nova-cert start
Starting openstack-nova-cert:
# service openstack-nova-consoleauth start
Starting openstack-nova-consoleauth:
# service openstack-nova-scheduler start
Starting openstack-nova-scheduler:
# service openstack-nova-conductor start
Starting openstack-nova-conductor:
# service openstack-nova-novncproxy start
Starting openstack-nova-novncproxy:
# chkconfig openstack-nova-api on
# chkconfig openstack-nova-cert on
# chkconfig openstack-nova-consoleauth on
# chkconfig openstack-nova-scheduler on
# chkconfig openstack-nova-conductor on
# chkconfig openstack-nova-novncproxy on 验证是否配置成功:
# nova image-list
/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 attack vulnerability.
_warn("Not using mpz_powm_sec.You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning)
+--------------------------------------+------------------+--------+--------+
| ID | Name | Status | Server |
+--------------------------------------+------------------+--------+--------+
| a3ae2a3d-832f-42bb-907f-f508c12de5d9 | cirros-0.3.4.img | ACTIVE | |
+--------------------------------------+------------------+--------+--------+
3、Configure a compute node
# yum install openstack-nova-compute 配置/etc/nova/nova.conf:
这个跟Controller节点上的nova服务器端的配置文件不完成相同,不能把它复制过来
# cd /etc/nova
# ls
api-paste.ininova.confpolicy.jsonreleaserootwrap.conf
# vi nova.conf
#qpid_hostname=localhost
qpid_hostname=192.168.10.1
#rpc_backend=rabbit
rpc_backend=qpid
#auth_strategy=noauth
auth_strategy=keystone
#connection=mysql://nova:nova@localhost/nova
connection=mysql://nova:nova@192.168.10.1/nova
#glance_host=$my_ip
glance_host=192.168.10.1
#my_ip=10.0.0.1
my_ip=192.168.10.2
#novncproxy_base_url=http://127.0.0.1:6080/vnc_auto.html
novncproxy_base_url=http://192.168.10.1:6080/vnc_auto.html
#vncserver_listen=127.0.0.1
vncserver_listen=0.0.0.0
#vncserver_proxyclient_address=127.0.0.1
vncserver_proxyclient_address=192.168.10.2
#vif_plugging_is_fatal=true
vif_plugging_is_fatal=false #网络配置错误虚拟机就不能启动
#vif_plugging_timeout=300
vif_plugging_timeout=10 #虚拟机设置网络超时时间
#
# Options defined in keystoneclient.middleware.auth_token
#
# Prefix to prepend at the beginning of the path (string
# value)
#auth_admin_prefix=
auth_protocol=http
auth_url=http://controller:5000
auth_host=controller
auth_port=35357
auth_user=nova
admin_tenant_name=service
admin_password=nova 启动服务:
# service libvirtd start
Starting libvirtd daemon:
# service messagebus start
Starting system message bus:
# service openstack-nova-compute start
Starting openstack-nova-compute:
# service openstack-nova-compute status
openstack-nova-compute (pid5247) is running...
# chkconfig libvirtd on
# chkconfig messagebus on
# chkconfig openstack-nova-compute on 验证是否配置成功:
在Controller节点上验证
# nova hypervisor-list
+----+---------------------+
| ID | Hypervisor hostname |
+----+---------------------+
| 1| Node2 |
+----+---------------------+
附、可能遇到的报错
1、烦人的警告信息
# nova image-list
/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 attack vulnerability.
_warn("Not using mpz_powm_sec.You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning)需要5以上的版本的gmp:
解决方法:下载gmp 5以上的版本,编译安装
# ./configure
# make
# make check
# make install
# yum install python-devel
# yum install python-pip -y
# pip install --ignore-installed PyCrypto
# service openstack-keystone restart
2、在配置Computer service时,启动openstack-nova-novncproxy时无法正常启动。
# service openstack-nova-novncproxy start
Starting openstack-nova-novncproxy:
# service openstack-nova-novncproxy status
openstack-nova-novncproxy dead but pid file exists 然后改用手动启动服务,依旧不行,报错信息如下:
# /usr/bin/python /usr/bin/nova-novncproxy --web /usr/share/novnc/
Traceback (most recent call last):
File "/usr/bin/nova-novncproxy", line 10, in <module>
sys.exit(main())
File "/usr/lib/python2.6/site-packages/nova/cmd/novncproxy.py", line 87, in main
wrap_cmd=None)
File "/usr/lib/python2.6/site-packages/nova/console/websocketproxy.py", line 47, in __init__
ssl_target=None, *args, **kwargs)
File "/usr/lib/python2.6/site-packages/websockify/websocketproxy.py", line 231, in __init__
websocket.WebSocketServer.__init__(self, RequestHandlerClass, *args, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'no_parent' 查阅了相关信息后发现是由于python-websockify的版本导致的,openstack-icehouse需要的python-websockify版本<=0.5.1,但是在安装时默认使用了epel源中的0.6.0版本。配置好icehouse的源后,对该软件包进行降级即可。
# yum list | grep websockify
python-websockify.noarch 0.5.1-1.el6 @openstack-icehouse
python-websockify.noarch 0.6.0-3.el6 epel# yum downgrade python-websockify-0.5.1-1.el6.noarch
页:
[1]