Ubuntu12.04下配置安装OpenStack(ESSEX)
本流程主要参考官方文档,有少许改动,暂时未装swift,按照此流程笔者安装成功。
从ALL-IN-ONE到多台部署,笔者遇到太多问题,物理环境换了几波。现在实验环境为:
DELL PowerEdgeR710服务器两台、笔记本一台、Ubuntu12.04-server系统。
提一下必须的参数:
两台R710都四块网卡,这里只需要两块,eth0都连到实验室交换机,两机eth1直连。
R710两块硬盘,控制节点匀出一块做swift;计算节点两块硬盘做Raid 0。
控制节点安装所有组件,计算节点仅仅安装nova-compute模块,笔记本也是ubuntu系统,做client用(上传镜像之类的工作)。
配置
|
控制节点 |
计算节点 |
用户机 |
安装组件 |
所有组件 |
nova-compute |
|
网络接口 |
eth0-Public/eth1-Private |
eth0-Public/eth1-Private |
eth0-Public |
IP地址 |
eth0-192.168.1.22 eth1-10.10.10.22 |
eth0-192.168.1.21 eth1-10.10.10.21 |
eth0-192.168.1.125 |
DNS服务器 |
192.168.0.1 |
192.168.0.1 |
192.168.0.1 |
网关 |
192.168.0.1 |
192.168.0.1 |
192.168.0.1 |
主机名 |
OpenStack-center22 |
OpenStack-nc21 |
|
Part:控制节点
换了源以后重新update一把
sudo apt-get update
sudo apt-get upgrade
安装网桥组件
sudo apt-get install bridge-utils
修改配置文件/etc/network/interfaces如下
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.22
netmask 255.255.0.0
network 192.168.0.0
broadcast 192.168.255.255
gateway 192.168.0.1
dns-nameservers 192.168.0.1
dns-search NDSL
auto eth1
iface eth1 inet static
address 10.10.10.22
netmask 255.255.255.0
network 10.10.10.0
broadcast 10.10.10.255
重启network服务
sudo /etc/init.d/networking restart
安装NTP server
sudo apt-get install ntp
修改配置文件/etc/ntp.conf添加如下代码
server ntp.ubuntu.com
server 127.127.1.0
fudge 127.127.1.0 stratum 10
重启NTP服务
sudo service ntp restart
安装数据库
sudo apt-get install mysql-server python-mysqldb
安装的时候会要求输入用户自己密码,这里我们用’password’代替。
修改配置文件/etc/mysql/my.cnf
把bind-address一栏的127.0.0.1改为0.0.0.0,即如下
bind-address = 0.0.0.0
重启mysql服务器
sudo restart mysql
创建三个数据库,及其管理员
sudo mysql -uroot -ppassword -e 'CREATE DATABASE nova;'
sudo mysql -uroot -ppassword -e 'CREATE USER novadbadmin;'
sudo mysql -uroot -ppassword -e "GRANT ALL PRIVILEGES ON nova.* TO
'novadbadmin'@'%';"
sudo mysql -uroot -ppassword -e "SET PASSWORD FOR 'novadbadmin'@'%' =
PASSWORD('novasecret');"
sudo mysql -uroot -ppassword -e 'CREATE DATABASE glance;'
sudo mysql -uroot -ppassword -e 'CREATE USER glancedbadmin;'
sudo mysql -uroot -ppassword -e "GRANT ALL PRIVILEGES ON glance.* TO
'glancedbadmin'@'%';"
sudo mysql -uroot -ppassword -e "SET PASSWORD FOR 'glancedbadmin'@'%' =
PASSWORD('glancesecret');"
sudo mysql -uroot -ppassword -e 'CREATE DATABASE keystone;'
sudo mysql -uroot -ppassword -e 'CREATE USER keystonedbadmin;'
sudo mysql -uroot -ppassword -e "GRANT ALL PRIVILEGES ON keystone.* TO
'keystonedbadmin'@'%';"
sudo mysql -uroot -ppassword -e "SET PASSWORD FOR 'keystonedbadmin'@'%' =
PASSWORD('keystonesecret');"
安装keystone
sudo apt-get install keystone python-keystone python-keystoneclient
修改配置文件/etc/keystone/keystone.conf,有两处修改,修改如下
…
admin_token = admin
…
connection = mysql://keystonedbadmin:keystonesecret@192.168.1.22/keystone
…
重启keystone服务
sudo service keystone restart
sudo keystone-manage db_sync
设置环境变量
export SERVICE_ENDPOINT="http://192.168.1.22:35357/v2.0"
export SERVICE_TOKEN=admin
创建Tenant
keystone tenant-create --name admin
keystone tenant-create --name service
创建User
keystone user-create --name admin --pass admin
keystone user-create --name nova --pass nova
keystone user-create --name glance --pass glance
//keystone user-create --name swift --pass swift
创建Role
keystone role-create --name admin
keystone role-create --name Member
ps:role的权限的管理在/etc/相应服务/policy.conf里面做更改
查看刚创建tenant、user、role的id,下条命令要用
keystone tenant-list
keystone user-list
keystone role-list
把role赋予user,并分配到tenant
利用上面的命令看到的id来替换本文中的各id
先把Role ‘admin’ 赋予 User ‘admin’, 再分配到Tenant ‘admin’
keystone user-role-add --user b3de3aeec2544f0f90b9cbfe8b8b7acd --role
2bbe305ad531434991d4281aaaebb700 --tenant_id 7f95ae9617cd496888bc412efdceabfd
再把Role ‘Member’ 赋予 User ‘admin’, 再分配到Tenant ‘admin’
keystone user-role-add --user b3de3aeec2544f0f90b9cbfe8b8b7acd --role
d983800dd6d54ee3a1b1eb9f2ae3291f --tenant_id 7f95ae9617cd496888bc412efdceabfd
把Role ‘admin’ 赋予 User ‘nova’, ‘glance’, ‘swift’, 再分配到Tenant ‘service’
keystone user-role-add --user ce8cd56ca8824f5d845ba6ed015e9494 --role
2bbe305ad531434991d4281aaaebb700 --tenant_id c7970080576646c6959ee35970cf3199
keystone user-role-add --user 518b51ea133c4facadae42c328d6b77b --role
2bbe305ad531434991d4281aaaebb700 --tenant_id c7970080576646c6959ee35970cf3199
//keystone user-role-add --user 1b986cca67e242f38cd6aa4bdec587ca --role
2bbe305ad531434991d4281aaaebb700 --tenant_id c7970080576646c6959ee35970cf3199
创建服务
keystone service-create --name nova --type compute --description 'OpenStack
Compute Service'
keystone service-create --name volume --type volume --description 'OpenStack
Volume Service'
keystone service-create --name glance --type image --description 'OpenStack
Image Service'
//keystone service-create --name swift --type object-store --description
'OpenStack Storage Service'
keystone service-create --name keystone --type identity --description
'OpenStack Identity Service'
keystone service-create --name ec2 --type ec2 --description 'EC2 Service'
查看刚创建service的id
keystone service-list
创建endpoint
创建nova-compute的endpoint
keystone endpoint-create --region myregion --service_id 1e93ee6c70f8468c88a5cb1b106753f3 –publicurl 'http://192.168.1.22:8774/v2/$(tenant_id)s' --adminurl 'http://192.168.1.22:8774/v2/$(tenant_id)s' --internalurl 'http://192.168.1.22:8774/v2/$(tenant_id)s'
创建nova-volume的endpoint
keystone endpoint-create --region myregion --service_id f38f4564ff7b4e43a52b2f5c1b75e5fa –publicurl 'http://192.168.1.22:8776/v1/$(tenant_id)s' --adminurl 'http://192.168.1.22:8776/v1/$(tenant_id)s' --internalurl 'http://192.168.1.22:8776/v1/$(tenant_id)s'
创建glance的endpoint
keystone endpoint-create --region myregion --service_id fbafab6edcab467bb734380ce6be3561 --publicurl 'http://192.168.1.22:9292/v1' --adminurl 'http://192.168.1.22:9292/v1' –internalurl 'http://192.168.1.22:9292/v1'
//创建swift的endpoint
//keystone endpoint-create --region myregion --service_id 96f35e1112b143e59d5cd5d0e6a8b22d –publicurl 'http://192.168.1.22:8080/v1/AUTH_$(tenant_id)s' --adminurl 'http://192.168.1.22:8080/v1' –internalurl 'http://192.168.1.22:8080/v1/AUTH_$(tenant_id)s'
创建keystone的endpoint
keystone endpoint-create --region myregion --service_id 7d4ec192dfa1456996f0f4c47415c7a7 --publicurl http://192.168.1.22:5000/v2.0 --adminurl http://192.168.1.22:35357/v2.0 --internalurl http://192.168.1.22:5000/v2.0
创建ec2的endpoint
keystone endpoint-create --region myregion --service_id 28fd92ffe3824004996a3e04e059d875 –publicurl http://192.168.1.22:8773/services/Cloud --adminurl http://192.168.1.22:8773/services/Admin --internalurl http://192.168.1.22:8773/services/Cloud
安装glance
sudo apt-get install glance glance-api glance-client glance-common glanceregistry python-glance
修改配置文件/etc/glance/glance-api-paste.ini和/etc/glance/glance-registry-paste.ini
原文
admin_tenant_name = %SERVICE_TENANT_NAME%
admin_user = %SERVICE_USER%
admin_password = %SERVICE_PASSWORD%
改为
admin_tenant_name = service
admin_user = glance
admin_password = glance
修改配置文件/etc/glance/glance-registry.conf,一处改动一处添加
改动
sql_connection = mysql://glancedbadmin:glancesecret@192.168.1.22/glance
在末尾添加
[paste_deploy]
flavor = keystone
修改配置文件/etc/glance/glance-api.conf
在末尾添加
[paste_deploy]
flavor = keystone
执行命令
sudo glance-manage version_control 0
sudo glance-manage db_sync
sudo restart glance-api
sudo restart glance-registry
设置环境变量
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_AUTH_URL="http://192.168.1.22:5000/v2.0/"
安装nova
sudo apt-get install nova-api nova-cert nova-compute nova-compute-kvm novadoc
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=/run/lock/nova
--allow_admin_api=true
--use_deprecated_auth=false
--auth_strategy=keystone
--scheduler_driver=nova.scheduler.simple.SimpleScheduler
--s3_host=192.168.1.22
--ec2_host=192.168.1.22
--rabbit_host=192.168.1.22
--cc_host=192.168.1.22
--nova_url=http://192.168.1.22:8774/v1.1/
--routing_source_ip=192.168.1.22
--glance_api_servers=192.168.1.22:9292
--image_service=nova.image.glance.GlanceImageService
--iscsi_ip_prefix=10.0.0
--sql_connection=mysql://novadbadmin:novasecret@192.168.
1.22/nova
--ec2_url=http://192.168.1.22:8773/services/Cloud
--keystone_ec2_url=http://192.168.1.22:5000/v2.0/ec2toke
ns
--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://192.168.1.22:6080/vnc_auto.
html
--vncserver_proxyclient_address=192.168.1.22
--vncserver_listen=192.168.1.22
# network specific settings
--network_manager=nova.network.manager.FlatDHCPManager
--public_interface=eth0
--flat_interface=eth1
--flat_network_bridge=br100
--fixed_range=10.0.0.1/27
--floating_range=192.168.12.0/27
--network_size=32
--flat_network_dhcp_start=10.0.0.33
--flat_injected=False
--force_dhcp_release
--iscsi_helper=tgtadm
--connection_type=libvirt
--root_helper=sudo nova-rootwrap
--verbose
创建物理卷(我是留了100G的空间出来给volume用)
sudo pvcreate /dev/sda6
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
原文
admin_tenant_name = %SERVICE_TENANT_NAME%
admin_user = %SERVICE_USER%
admin_password = %SERVICE_PASSWORD%
改为
admin_tenant_name = service
admin_user = nova
admin_password = nova
执行以下命令
sudo nova-manage db sync
重启所有nova服务
sudo restart libvirt-bin; sudo restart nova-network; sudo restart novacompute;
sudo restart nova-api; sudo restart nova-objectstore; sudo restart
nova-scheduler; sudo restart nova-volume; sudo restart nova-cert; sudo restart nova-consoleauth;
利用nova-manage service list可以查看服务当前状况
如果state都是笑脸:-)就没问题
安装Dashboard
sudo apt-get install openstack-dashboard
重启apache服务
sudo service apache2 restart
这时你可以通过192.168.1.22利用浏览器访问dashboard,用户名/密码:admin/admin
Part:计算节点
换了源以后重新update一把
sudo apt-get update
sudo apt-get upgrade
安装网桥组件
sudo apt-get install bridge-utils
修改配置文件/etc/network/interfaces如下
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.21
netmask 255.255.0.0
network 192.168.0.0
broadcast 192.168.255.255
gateway 192.168.0.1
dns-nameservers 192.168.0.1
dns-search NDSL
auto eth1
iface eth1 inet static
address 10.10.10.21
netmask 255.255.255.0
network 10.10.10.0
broadcast 10.10.10.255
重启network服务
sudo /etc/init.d/networking restart
安装NTP server
sudo apt-get install ntp
修改/etc/ntp.conf文件
添加
Server 192.168.1.22
与控制节点联系起来
重启ntp
sudo service ntp restart
安装nova-compute
sudo apt-get install nova-compute
修改配置文件/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=/run/lock/nova
--allow_admin_api=true
--use_deprecated_auth=false
--auth_strategy=keystone
--scheduler_driver=nova.scheduler.simple.SimpleScheduler
--s3_host=192.168.1.22
--ec2_host=192.168.1.22
--rabbit_host=192.168.1.22
--cc_host=192.168.1.22
--nova_url=http://192.168.1.22:8774/v1.1/
--routing_source_ip=192.168.1.22
--glance_api_servers=192.168.1.22:9292
--image_service=nova.image.glance.GlanceImageService
--iscsi_ip_prefix=10.0.0
--sql_connection=mysql://novadbadmin:novasecret@192.168.
1.22/nova
--ec2_url=http://192.168.1.22:8773/services/Cloud
--keystone_ec2_url=http://192.168.1.22:5000/v2.0/ec2toke
ns
--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://192.168.1.22:6080/vnc_auto.Html
--vncserver_proxyclient_address=192.168.1.21
--vncserver_listen=192.168.1.21
//ps:上面这三行与官网配置文档中不一致,官网的全是192.168.1.22,结果是没法在计算节点上跑虚拟机,下面两行改了以后就可以了。
# network specific settings
--network_manager=nova.network.manager.FlatDHCPManager
--public_interface=eth0
--flat_interface=eth1
--flat_network_bridge=br100
--fixed_range=10.0.0.1/27
--floating_range=192.168.12.0/27
--network_size=32
--flat_network_dhcp_start=10.0.0.33
--flat_injected=False
--force_dhcp_release
--iscsi_helper=tgtadm
--connection_type=libvirt
--root_helper=sudo nova-rootwrap
--verbose
重启nova-compute服务
sudo service restart nova-compute
同样,可以查看服务状况
sudo nova-manage service list
客户机
最好是图形化界面的操作系统,这里是ubuntu12.04-desktop
这里的功能主要有几个,制作镜像,上传镜像,查看实例情况等
安装NTP
sudo apt-get install -y ntp
修改配置文件/etc/ntp.conf,添加
server 192.168.1.22
重启NTP服务
sudo service ntp restart
安装客户端工具
sudo apt-get install python-novaclient glance-client
如果要制作镜像
sudo apt-get install qemu-kvm
设置环境变量
export SERVICE_TOKEN=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_AUTH_URL="http://192.168.1.22:5000/v2.0/"
export SERVICE_ENDPOINT=http://192.168.1.22:35357/v2.0
制作了镜像(笔者是kvm制作)以后可以利用glance命令上传
glance add name="windows" is_public=true container_format=ovf disk_format=
qcow2 < windowsserver.img
之后可以在dashboard中利用该镜像起虚拟机了。
需要注意的是
Security group的编辑,在dashboard中找到security group项,添加以下规则
如果需要floating ip
nova-manage floating create –ip_range=192.168.12.0/27
这样就建了一个公网ip池,以后实例的公网ip就在本池中分配,可以通过dashboard操作。