手把手教你安装OpenStack——Ocata安装指南(上)
本文目录: 安装环境 认证服务 镜像服务 计算服务 网络服务 Dashboard
一、安装环境 1、示例架构根据官方文档,本文架构采用一个控制节点和一个计算节点。 (The example architecture requires at least twonodes (hosts) to launch a basic virtual machine or instance. ) 控制节点运行认证服务、镜像服务、计算服务的管理部分、网络服务的管理部分、各种网络代理以及Dashboard,还包括一些基础服务如数据库、消息队列以及NTP。 计算节点上运行计算服务中管理实例的管理程序部分。默认情况下,计算服务使用 KVM。还运行网络代理服务,用来连接实例和虚拟网络以及通过安全组给实例提供防火墙服务。 2、网络 公有网络选项以尽可能简单的方式通过layer-2(网桥/交换机)服务以及VLAN网络的分割来部署OpenStack网络服务。实际上,它将虚拟网络桥接到物理网络,并依靠物理网络基础设施提供layer-3服务(路由)。另外,DHCP服务为实例提供IP地址。 私有网络选项扩展了公有网络选项,增加了layer-3(路由)服务,使用VXLAN类似的方式。本质上,它使用NAT路由虚拟网络到物理网络。另外,这个选项也提供高级服务的基础,比如LBaas和FWaaS。 这里我们选择私有网络。 3、安全 下面是各个需要密码的服务以及解释,建议这些密码使用同一个,以免混淆。 4、主机网络配置 控制节点 Controller:IP:192.168.0.112/24 GATEWAY:192.168.0.1
网络配置完之后需要将防火墙和selinux关闭。 systemctl stop firewalld.service
systemctl disable firewalld.service
vim /etc/selinux/config,配置selinux=disabled # setenforce 0,使配置立即生效
编辑/etc/hosts # controller 192.168.0.112 controller # compute1 192.168.0.113 compute1
计算节点 Compute:IP:192.168.0.113/24 GATEWAY:192.168.0.1
同样需要配置地址解析,参考控制节点。 配置完成之后需要进行验证: 分别在控制节点和计算节点上: 控制节点上输入# ping -c 4 compute1 计算节点上输入# ping -c 4 controller 5、NTP控制节点 # yum install chrony
server NTP_SERVER iburst
可以根据需要将NTP_SERVER替换为合适的NTP服务器,建议不用改。然后添加: allow 192.168.0.0/24
即允许计算节点同步。(计算节点IP网段属于192.168.0.0) # systemctl enable chronyd.service # systemctl start chronyd.service
启动服务。 计算节点 编辑/etc/chrony.conf,可以将IT论坛的几个同步地址注释掉。 server controller iburst
同步控制节点。 # systemctl enable chronyd.service # systemctl start chronyd.service
启动服务。(如果发现同步的不是控制节点,那么重启一下NTP服务即可。) # systemctl restart chronyd.service
验证操作: 在控制节点上同步时间。 # chronyc sources
带星号的是NTP当前同步的地址。 计算节点上同步。 # chronycsources 210 Number of sources = 1 MS Name/IP address Stratum Poll Reach LastRx Last sample ====================================================== ^* controller 3 9 377 421 +15us[ -87us] +/- 15ms 6、安装OpenStack包以下操作在所有节点上进行。 # yum install centos-release-openstack-ocata
1)在所有节点上升级包 # yum upgrade 2)安装OpenStack 客户端 # yum install python-openstackclient
3)CentOS默认启用了SELinux,安装openstack-selinux来自动管理OpenStack服务的安全策略。 # yum install openstack-selinux
7、安装数据库 数据库一般运行在控制节点上。 安装并配置组件。 # yum install mariadb mariadb-server python2-PyMySQL
创建并编辑/etc/my.cnf.d/openstack.cnf 文件,并完成以下操作。在配置文件中添加以下配置: [mysqld] bind-address=192.168.0.112 default-storage-engine=innodb innodb_file_per_table=on max_connections=4096 collation-server=utf8_general_ci character-set-server=utf8
其中bind-address为控制节点IP地址。 1)启动数据库并设置开机启动 # systemctl enable mariadb.service # systemctl start mariadb.service
2)运行mysql_secure_installation脚本来保证数据库安全,为root账户设置一个合适的密码 # mysql_secure_installation
8、消息队列 OpenStack使用消息队列来协调服务之间的状态和操作,消息队列服务一般运行在控制节点上。,OpenStack支持RabbitMQ,Qpid以及ZeroMQ等消息队列服务。本指南使用RabbitMQ消息队列服务。 # yum install rabbitmq-server
# systemctl enable rabbitmq-server.service # systemctl start rabbitmq-server.service
#rabbitmqctl add_user openstack RABBIT_PASS Creating user "openstack" ...
使用合适的密码替换掉 RABBIT_PASS #rabbitmqctl set_permissions openstack".*"".*"".*" Setting permissions for user "openstack" in vhost "/" ... 9、缓存令牌认证服务的认证机制使用Memcached来缓存令牌,一般运行在控制节点上。 # yum install memcached python-memcached
编辑 /etc/sysconfig/memcached文件并配置IP地址,将127.0.0.1改为控制节点IP。 启动 Memcached服务并设置开机启动。 # systemctl enable memcached.service # systemctl start memcached.service 二、认证服务在 控制节点上配置。 1、前提条件 以root身份登录数据库 $ mysql -u root -p 创建keystone数据库 MariaDB[(none)]> CREATE DATABASE keystone;
给数据库赋予适当的权限; MariaDB [(none)]> GRANT ALL PRIVILEGESON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS'; MariaDB [(none)]> GRANT ALL PRIVILEGESON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
用合适的密码替换KEYSTONE_DBPASS 2、安装并配置组件 # yum install openstack-keystone httpd mod_wsgi
编辑文件/etc/keystone/keystone.conf 在[database]选项配置数据库连接 [database] # ... connection=mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
替换掉KEYSTONE_DBPASS 在[token]选项中,配置,Fernet令牌提供者: [token] # ... provider=fernet
# su -s/bin/sh -c "keystone-manage db_sync" keystone
# keystone-manage fernet_setup --keystone-user keystone --keystone- groupkeystone # keystone-manage credential_setup --keystone-user keystone--keystone-groupkeystone
# keystone-manage bootstrap --bootstrap-password ADMIN_PASS --bootstrap-admin-urlhttp://controller:35357/v3/ --bootstrap-internal-urlhttp://controller:5000/v3/ --bootstrap-public-urlhttp://controller:5000/v3/ --bootstrap-region-id RegionOne
替换掉ADMIN_PASS # ln -s/usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
1.启动Apache服务器并设置开机启动 # systemctlenable httpd.service # systemctl start httpd.service
2.配置管理账户 $export OS_USERNAME=admin $export OS_PASSWORD=ADMIN_PASS $export OS_PROJECT_NAME=admin $export OS_USER_DOMAIN_NAME=Default $export OS_PROJECT_DOMAIN_NAME=Default $export OS_AUTH_URL=http://controller:35357/v3 $export OS_IDENTITY_API_VERSION=3 3、创建一个域、项目、用户和角色$ openstack project create --domain default --deion "Service Project"service
1、创建demo项目: $ openstack project create --domain default --deion "Demo Project"demo
2、创建demo用户: $ openstack user create --domain default --password-prompt demo
3、创建user角色: $ openstack role create user
4、将user角色添加到demo项目和用户中。 $ openstack role add --project demo --user demo user 4、验证操作编辑/etc/keystone/keystone-paste.ini文件,并从[pipeline:public_api], [pipeline:admin_api], 和[pipeline:api_v3]选项中删除admin_token_auth $unset OS_AUTH_URL OS_PASSWORD
$ openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name default--os-user-domain-name default --os-project-name admin --os-username admintoken issue
这里遇到错误 由于是Http错误,所以返回Apache HTTP 服务配置的地方,重启Apache 服务,并重新设置管理账户: # systemctlrestart httpd.service $ export OS_USERNAME=admin $ export OS_PASSWORD=ADMIN_PASS $ export OS_PROJECT_NAME=admin $ export OS_USER_DOMAIN_NAME=Default $ export OS_PROJECT_DOMAIN_NAME=Default $ export OS_AUTH_URL=http://controller:35357/v3 $ export OS_IDENTITY_API_VERSION=3
错误解决! $ openstack--os-auth-url http://controller:5000/v3 --os-project-domain-namedefault --os-user-domain-name default --os-project-namedemo --os-username demo token issue Password:
密码为创建demo用户时的密码。 5、创建OpenStack客户端环境脚本: 在前面章节中,我们使用环境变量和命令的组合来配置认证服务,为了更加高效和方便,我们创建一个脚本方便以后的操作。这些脚本包括一些公共的操作,但是也支持自定义的操作。 创建并编辑admin-openrc文件,并添加以下内容: export OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=root export OS_AUTH_URL=http://controller:35357/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
替换掉OS_PASSWORD的密码。 创建并编辑demo-openrc文件,并添加以下内容: export OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_NAME=demo export OS_USERNAME=demo export OS_PASSWORD=DEMO_PASS export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
加载脚本文件更新环境变量: $ . admin-openrc
请求一个认证令牌; $ openstack token issue
三、镜像服务 1、前提条件 连接数据库,使用root登录。 $ mysql -u root -p
创建 glance 数据库 MariaDB [(none)]> CREATE DATABASEglance;
赋予权限: MariaDB [(none)]> GRANT ALL PRIVILEGESON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS'; MariaDB [(none)]> GRANT ALL PRIVILEGESON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';
替换GLANCE_DBPASS为合适的密码; 退出数据库连接。 $ . admin-openrc
创建glance用户 $ openstack user create --domain default --password-prompt glance
添加管理员角色到glance用户和service项目中: $ openstack role add --project service --user glance admin
创建镜像服务API端口: $ openstack endpoint create --region RegionOne imagepublic http://controller:9292 $ openstack endpoint create --region RegionOne image internal http://controller:9292 $ openstack endpoint create --region RegionOne image admin http://controller:9292 2、安装并配置组件# yum install openstack-glance
在[keystone_authtoken]和[paste_deploy]选项中,配置认证服务权限: [keystone_authtoken] # ... auth_uri=http://controller:5000 auth_url=http://controller:35357 memcached_servers=controller:11211 auth_type=password project_domain_name=default user_domain_name=default project_name=service username=glance password=GLANCE_PASS [paste_deploy] # ... flavor=keystone
替换掉GLANCE_PASS密码。删除或注释掉IT论坛[keystone_authtoken]参数。 在[glance_store]选项中,配置本地文件系统存储和镜像文件位置。 [glance_store] # ... stores=file,http default_store=file filesystem_store_datadir=/var/lib/glance/images/
编辑/etc/glance/glance-registry.conf文件,并完成以下操作: 在[database]选项中,配置数据库权限: [database] # ... connection=mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
替换掉 GLANCE_DBPASS密码。 在[keystone_authtoken]和[paste_deploy]选项中,配置认证服务权限: [keystone_authtoken]# ... auth_uri=http://controller:5000 auth_url=http://controller:35357 memcached_servers=controller:11211 auth_type=password project_domain_name=default user_domain_name=default project_name=service username=glance password=GLANCE_PASS [paste_deploy] # ... flavor=keystone 替换掉GLANCE_DBPASS密码。 4、更新镜像服务数据库 完成安装 # systemctl enable openstack-glance-api.service openstack-glance-registry.service # systemctl start openstack-glance-api.service openstack-glance-registry.service 5、验证操作$ . admin-openrc
$ openstack image create "cirros" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public
openstack image list 四、计算服务 1、安装和配置控制节点创建数据库,与之前步骤类似,这里不再详细列出 $ mysql -u root -p MariaDB [(none)]> CREATE DATABASEnova_api; MariaDB [(none)]> CREATE DATABASE nova; MariaDB [(none)]> GRANT ALL PRIVILEGESON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS'; MariaDB [(none)]> GRANT ALL PRIVILEGESON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS'; MariaDB [(none)]> GRANT ALL PRIVILEGESON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS'; MariaDB [(none)]> GRANT ALL PRIVILEGESON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
$ . admin-openrc
创建nova用户 $ openstack user create --domain default --password-prompt nova
设置合适的密码 向nova用户中添加admin角色。 $ openstack role add --project service --user nova admin
创建nova服务实体 $ openstack service create --name nova --deion "OpenStack Compute" compute
2、创建计算服务API端口 $ openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%(tenant_id)s $ openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%(tenant_id)s $ openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%(tenant_id)s
安装相关包 # yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler
在[DEFAULT]选项中,开启计算和元数据API [DEFAULT] # ... enabled_apis=osapi_compute,metadata
在 [api_database]和[database]选项中,配置数据库连接 [api_database] # ... connection=mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api [database] # ... connection=mysql+pymysql://nova:NOVA_DBPASS@controller/nova
替换NOVA_DBPASS密码。 在[DEFAULT]选项中,配置消息队列连接。 [DEFAULT] # ... transport_url=rabbit://openstack:RABBIT_PASS@controller
替换掉RABBIT_PASS 在[api]和[keystone_authtoken]选项中, [api] # ... auth_strategy=keystone [keystone_authtoken] # ... auth_uri=http://controller:5000 auth_url=http://controller:35357 memcached_servers=controller:11211 auth_type=password project_domain_name=default user_domain_name=default project_name=service username=nova password=NOVA_PASS
替换掉NOVA_PASS 在[DEFAULT]选项中,配置my_ip [DEFAULT] # ... my_ip=10.0.0.11
开启对网络服务的支持 [DEFAULT] # ... use_neutron=True firewall_driver=nova.virt.firewall.NoopFirewallDriver
在[vnc]选项中,配置VNC代理 [vnc] enabled=true # ... vncserver_listen=$my_ip vncserver_proxyclient_address=$my_ip
在[glance]选项中,配置镜像服务API的位置。 [glance] # ... api_servers=http://controller:9292
在[oslo_concurrency]选项中,配置锁定路径 [oslo_concurrency] # ... lock_path=/var/lib/nova/tmp
更新数据库 #su -s /bin/sh -c"nova-manage api_db sync"nova #su -s /bin/sh -c "nova-manage db sync"nova
开启计算服务并设置开机启动; # systemctl enable openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service # systemctl start openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service 3、安装并配置计算节点安装相关包 # yum install openstack-nova-compute
编辑/etc/nova/nova.conf文件 在[DEFAULT]选项中,开启计算和元数据API [DEFAULT] # ... enabled_apis=osapi_compute,metadata
在[DEFAULT]选项中,配置消息队列权限 [DEFAULT] # ... transport_url=rabbit://openstack:RABBIT_PASS@controller
替换掉RABBIT_PASS 在[api]和[keystone_authtoken]选项中,配置认证服务权限 [api] # ... auth_strategy=keystone [keystone_authtoken] # ... auth_uri=http://controller:5000 auth_url=http://controller:35357 memcached_servers=controller:11211 auth_type=password project_domain_name=default user_domain_name=default project_name=service username=nova password=NOVA_PASS
替换掉NOVA_PASS 在[DEFAULT]选项中,配置my_ip参数 [DEFAULT] # ... my_ip=MANAGEMENT_INTERFACE_IP_ADDRESS
替换MANAGEMENT_INTERFACE_IP_ADDRESS为计算节点IP 在[DEFAULT]选项中,开启网络服务支持 [DEFAULT] # ... use_neutron=True firewall_driver=nova.virt.firewall.NoopFirewallDriver
在[vnc]选项中,开启并配置远程控制台权限 [vnc] # ... enabled=True vncserver_listen=0.0.0.0 vncserver_proxyclient_address=$my_ip novncproxy_base_url=http://controller:6080/vnc_auto.html
在[glance]选项中,配置镜像服务API地址 [glance] # ... api_servers=http://controller:9292
在[oslo_concurrency]选项,配置锁定路径 [oslo_concurrency] # ... lock_path=/var/lib/nova/tmp
4、完成安装 $ egrep -c '(vmx|svm)' /proc/cpuinfo
如果输出值大于等于1,那么不需要配置,否则,需要做一下配置 编辑/etc/nova/nova.conf文件,配置[libvirt] [libvirt] # ... virt_type=qemu
# systemctl enable libvirtd.serviceopenstack-nova-compute.service # systemctl start libvirtd.service openstack-nova-compute.service
在控制节点上进行操作。 获取admin权限 $ . admin-openrc
列出服务组件来验证每个组件都成功运行了 $ openstack compute service list
这里遇到问题:发现计算节点上服务没有启动 查看计算节点日志:/var/log/nova/nova-compute.log发现 里面提到需要配置placement,而官方文档并没有提到这一点。解决办法是安装openstack-nova-placement-api,并配置相关选项。 在控制节点上,然后创建用户把用户placement添加到项目中去并创建placement类型的服务目录: 最终创建端口: 在计算节点上编辑文件:/etc/nova/nova.conf 在placement选项中添加: auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = nova password = root os_region_name = RegionOne
替换掉password,重启计算服务: # systemctl restartopenstack-nova-compute.service
可以看到服务已经启动: 控制节点上也显示正常: 在此参考了 http://superbigsea.blog.51cto.com/6862263/1901216,特别感谢! 下面接着验证操作: 3、列出认证服务中的API端口以检查连通性 $ openstack catalog list
4、列出镜像服务中的镜像以验证连通性; $ openstack image list
下节继续配置网络服务和Dashboard。
手把手教你安装OpenStack——Ocata安装指南(上)
|