openstack搭建8、部署glance映象服務
阿新 • • 發佈:2021-01-21
8、部署glance映象服務
8.1 配置MariaDB資料庫中的glance使用者和許可權等
注:由於是叢集,所以只要在一個控制節點上建立即可
[root@controller1:/root]# mysql -uroot -p"123456" MariaDB [(none)]> CREATE DATABASE glance; Query OK, 1 row affected (0.009 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_szh'; Query OK, 0 rows affected (0.010 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_szh'; Query OK, 0 rows affected (0.010 sec) MariaDB [(none)]> flush privileges; MariaDB [(none)]> exit Bye
8.2 建立glance api
[root@controller1:/root]# source openrc [root@controller1:/root]# openstack user list +----------------------------------+--------+ | ID | Name | +----------------------------------+--------+ | 5b63c4528d2a4147b52dd720a4a387fe | admin | | 398fe755d4dd47b6851c6eee63316f13 | myuser | +----------------------------------+--------+ //建立glance使用者 [root@controller1:/root]# openstack user create --domain default --password=glance_szh glance+---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | 34c34fe5d78e4f39bfd63f82ad989585 | | name | glance | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+ //glance使用者賦權(為glance使用者賦予admin許可權) [root@controller1:/root]# openstack role add --project service --user glance admin //建立glacne服務實體 [root@controller1:/root]# openstack service create --name glance --description "OpenStack Image" image +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Image | | enabled | True | | id | 369d083b4a094c1fb57e189d54305ea9 | | name | glance | | type | image | +-------------+----------------------------------+ //建立glance-api 注:--region與初始化admin使用者時生成的region一致;api地址統一採用VIP,服務型別為image [root@controller1:/root]# openstack endpoint create --region RegionOne image public http://VirtualIP:9293 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 3df1aef87c1a4f069e9742486f200c18 | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | 369d083b4a094c1fb57e189d54305ea9 | | service_name | glance | | service_type | image | | url | http://VirtualIP:9293 | +--------------+----------------------------------+ [root@controller1:/root]# openstack endpoint create --region RegionOne image internal http://VirtualIP:9293 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | b7b0084313744b8a91a142b1221e0443 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | 369d083b4a094c1fb57e189d54305ea9 | | service_name | glance | | service_type | image | | url | http://VirtualIP:9293 | +--------------+----------------------------------+ [root@controller1:/root]# openstack endpoint create --region RegionOne image admin http://VirtualIP:9293 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | e137861e214c46ed898a751db74cb70a | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | 369d083b4a094c1fb57e189d54305ea9 | | service_name | glance | | service_type | image | | url | http://VirtualIP:9293 | +--------------+----------------------------------+ [root@controller2:/root]# openstack endpoint list +----------------------------------+-----------+--------------+--------------+---------+---- | ID | Region | Service Name | Service Type | Enabled | Interface | URL | +----------------------------------+-----------+--------------+--------------+---------+---- | 6e109052bb4a5affa30fe3b9e3e5fcc3 | RegionOne | keystone | identity | True | internal | http://VirtualIP:5001/v3/ | | 80e4fa83731d5933afe694481b5e0464 | RegionOne | glance | image | True | admin | http://VirtualIP:9293 | | 2ddb366df7e95af9af298b5f11774fb4 | RegionOne | keystone | identity | True | admin | http://VirtualIP:5001/v3/ | | r592cb41c0bb524c9817633ed1946b45 | RegionOne | keystone | identity | True | public | http://VirtualIP:5001/v3/ | | u7b0084313745b8a91a142b1221e0443 | RegionOne | glance | image | True | internal | http://VirtualIP:9293 | | pdb2cdadfb7554abad1f216ca719f478 | RegionOne | glance | image | True | public | http://VirtualIP:9293 | +----------------------------------+-----------+--------------+--------------+---------+----
8.3 安裝glance程式
[root@controller1:/root]# yum install openstack-glance -y [root@controller2:/root]# yum install openstack-glance -y [root@controller3:/root]# yum install openstack-glance -y
8.3 配置glance-api.conf程式配置檔案
[root@controller1:/root]# cp -p /etc/glance/glance-api.conf{,.bak} [root@controller2:/root]# cp -p /etc/glance/glance-api.conf{,.bak} [root@controller3:/root]# cp -p /etc/glance/glance-api.conf{,.bak} [root@controller1:/etc/glance]# vim glance-api.conf [DEFAULT] enable_v1_api = false bind_host = 192.168.110.121 [database] connection = mysql+pymysql://glance:GLANCE_szh@VirtualIP:3307/glance [glance_store] stores = file,http default_store = file filesystem_store_datadir = /var/lib/glance/images/ [keystone_authtoken] www_authenticate_uri = http://VirtualIP:5001 auth_url = http://VirtualIP:5001 memcached_servers = controller2:11211,controller1:11211,controller3:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = glance password = glance_szh [paste_deploy] flavor = keystone //注: /var/lib/glance/images是預設的儲存目錄 [root@controller2:/root]# vim /etc/glance/glance-api.conf [DEFAULT] enable_v1_api = false bind_host = 192.168.110.122 [database] connection = mysql+pymysql://glance:GLANCE_szh@VirtualIP:3307/glance [glance_store] stores = file,http default_store = file filesystem_store_datadir = /var/lib/glance/images/ [keystone_authtoken] www_authenticate_uri = http://VirtualIP:5001 auth_url = http://VirtualIP:5001 memcached_servers = controller2:11211,controller1:11211,controller3:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = glance password = glance_szh [paste_deploy] flavor = keystone [root@controller3:/root]# vim /etc/glance/glance-api.conf [DEFAULT] enable_v1_api = false bind_host = 192.168.110.123 [database] connection = mysql+pymysql://glance:GLANCE_szh@VirtualIP:3307/glance [glance_store] stores = file,http default_store = file filesystem_store_datadir = /var/lib/glance/images/ [keystone_authtoken] www_authenticate_uri = http://VirtualIP:5001 auth_url = http://VirtualIP:5001 memcached_servers = controller2:11211,controller1:11211,controller3:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = glance password = glance_szh [paste_deploy] flavor = keystone //檢視[root@controller$:/root]# egrep -v "^#|^$" /etc/glance/glance-api.conf
8.4 配置glance-registry.conf程式配置檔案
[root@controller1:/root]# cp -p /etc/glance/glance-registry.conf{,.bak} [root@controller2:/root]# cp -p /etc/glance/glance-registry.conf{,.bak} [root@controller3:/root]# cp -p /etc/glance/glance-registry.conf{,.bak} [root@controller1:/etc/glance]# vim /etc/glance/glance-registry.conf [DEFAULT] bind_host = 192.168.110.121 [database] connection = mysql+pymysql://glance:GLANCE_szh@VirtualIP:3307/glance [keystone_authtoken] www_authenticate_uri = http://VirtualIP:5001 auth_url = http://VirtualIP:5001 memcached_servers = controller2:11211,controller1:11211,controller3:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = glance password = glance_szh [paste_deploy] flavor = keystone [root@controller2:/root]# vim /etc/glance/glance-registry.conf [DEFAULT] bind_host = 192.168.110.122 [database] connection = mysql+pymysql://glance:GLANCE_szh@VirtualIP:3307/glance [keystone_authtoken] www_authenticate_uri = http://VirtualIP:5001 auth_url = http://VirtualIP:5001 memcached_servers = controller2:11211,controller1:11211,controller3:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = glance password = glance_szh [paste_deploy] flavor = keystone [root@controller3:/root]# vim /etc/glance/glance-registry.conf [DEFAULT] bind_host = 192.168.110.123 [database] connection = mysql+pymysql://glance:GLANCE_szh@VirtualIP:3307/glance [keystone_authtoken] www_authenticate_uri = http://VirtualIP:5001 auth_url = http://VirtualIP:5001 memcached_servers = controller2:11211,controller1:11211,controller3:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = glance password = glance_szh [paste_deploy] flavor = keystone 8.5 同步glance資料庫(任意控制節點操作即可) [root@controller1:/root]# su -s /bin/sh -c "glance-manage db_sync" glance /usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:1352: OsloDBDeprecationWarning: EngineFacade is deprecated; please use oslo_db.sqlalchemy.enginefacade expire_on_commit=expire_on_commit, _conf=conf) INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. /usr/lib/python2.7/site-packages/pymysql/cursors.py:170: Warning: (1280, u"Name 'alembic_version_pkc' ignored for PRIMARY key.") result = self._query(query) INFO [alembic.runtime.migration] Running upgrade -> liberty, liberty initial INFO [alembic.runtime.migration] Running upgrade liberty -> mitaka01, add index on created_at and updated_at columns of 'images' table INFO [alembic.runtime.migration] Running upgrade mitaka01 -> mitaka02, update metadef os_nova_server INFO [alembic.runtime.migration] Running upgrade mitaka02 -> ocata_expand01, add visibility to images INFO [alembic.runtime.migration] Running upgrade ocata_expand01 -> pike_expand01, empty expand for symmetry with pike_contract01 INFO [alembic.runtime.migration] Running upgrade pike_expand01 -> queens_expand01 INFO [alembic.runtime.migration] Running upgrade queens_expand01 -> rocky_expand01, add os_hidden column to images table INFO [alembic.runtime.migration] Running upgrade rocky_expand01 -> rocky_expand02, add os_hash_algo and os_hash_value columns to images table INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. Upgraded database to: rocky_expand02, current revision(s): rocky_expand02 INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. Database migration is up to date. No migration needed. INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running upgrade mitaka02 -> ocata_contract01, remove is_public from images INFO [alembic.runtime.migration] Running upgrade ocata_contract01 -> pike_contract01, drop glare artifacts tables INFO [alembic.runtime.migration] Running upgrade pike_contract01 -> queens_contract01 INFO [alembic.runtime.migration] Running upgrade queens_contract01 -> rocky_contract01 INFO [alembic.runtime.migration] Running upgrade rocky_contract01 -> rocky_contract02 INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. Upgraded database to: rocky_contract02, current revision(s): rocky_contract02 INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. Database is synced successfully. [root@controller1:/root]# mysql -uroot -p123456 MariaDB [(none)]> use glance; 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 MariaDB [glance]> show tables; +----------------------------------+ | Tables_in_glance | +----------------------------------+ | alembic_version | | image_locations | | image_members | | image_properties | | image_tags | | images | | metadef_namespace_resource_types | | metadef_namespaces | | metadef_objects | | metadef_properties | | metadef_resource_types | | metadef_tags | | migrate_version | | task_info | | tasks | +----------------------------------+ 15 rows in set (0.001 sec) MariaDB [glance]> exit Bye
8.5 啟動glance服務
[root@controller1:/root]#systemctl enable openstack-glance-api.service openstack-glance-registry.service [root@controller1:/root]#systemctl start openstack-glance-api.service openstack-glance-registry.service [root@controller1:/root]#systemctl status openstack-glance-api.service openstack-glance-registry.service [root@controller2:/root]#systemctl enable openstack-glance-api.service openstack-glance-registry.service [root@controller2:/root]#systemctl start openstack-glance-api.service openstack-glance-registry.service [root@controller2:/root]#systemctl status openstack-glance-api.service openstack-glance-registry.service [root@controller3:/root]#systemctl enable openstack-glance-api.service openstack-glance-registry.service [root@controller3:/root]#systemctl start openstack-glance-api.service openstack-glance-registry.service [root@controller3:/root]#systemctl status openstack-glance-api.service openstack-glance-registry.service
8.6 測試映象
[root@controller1:/root]# cd /var/lib/glance/images/ [root@controller1:/var/lib/glance/images]# openstack image list [root@controller1:/var/lib/glance/images]# ls [root@controller1:/var/lib/glance/images]# glance image-list +----+------+ | ID | Name | +----+------+ +----+------+ [root@controller1:/var/lib/glance/images]# cd [root@controller1:/root]# wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img [root@controller1:/root]# ls admin-openrc anaconda-ks.cfg cirros-0.4.0-x86_64-disk.img demo-openrc get-pip.py openrc [root@controller1:/root]# openstack image create "cirros" \ > --file /root/cirros-0.4.0-x86_64-disk.img \ > --disk-format qcow2 --container-format bare \ > --public [root@controller1:/root]# openstack image list +--------------------------------------+--------+--------+ | ID | Name | Status | +--------------------------------------+--------+--------+ | f9a81ha1-ag98-1247-9174-s9419fns1c4b | cirros | active | +--------------------------------------+--------+--------+ [root@controller1:/root]# glance image-list +--------------------------------------+--------+ | ID | Name | +--------------------------------------+--------+ | f9a81ha1-ag98-1247-9174-s9419fns1c4b | cirros | +--------------------------------------+--------+
8.7 設定PCS資源
[root@controller1:/root]# pcs resource create openstack-glance-api systemd:openstack-glance-api --clone interleave=true [root@controller1:/root]# pcs resource create openstack-glance-registry systemd:openstack-glance-registry --clone interleave=true [root@controller1:/root]# pcs resource VirtualIP (ocf::heartbeat:IPaddr2): Started controller1 Clone Set: openstack-glance-api-clone [openstack-glance-api] Started: [ controller1 controller2 controller3 ] Clone Set: openstack-glance-registry-clone [openstack-glance-registry] Started: [ controller1 controller2 controller3 ]