Create Service For Glance
[root@controller1 ~]# openstack service create --name glance --description "OpenStack Image" image
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Image |
| enabled | True |
| id | 3083848116cd4706bc39241f81e3475b |
| name | glance |
| type | image |
+-------------+----------------------------------+
[root@controller1 ~]# openstack endpoint create --region RegionOne image public http://controller:9292
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | f3eb684e2209471795a04f6e73ce120f |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 3083848116cd4706bc39241f81e3475b |
| service_name | glance |
| service_type | image |
| url | http://controller:9292 |
+--------------+----------------------------------+
[root@controller1 ~]# openstack endpoint create --region RegionOne image internal http://controller:9292
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | bbf93cdcc35645288cfa90ef6239e1b5 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 3083848116cd4706bc39241f81e3475b |
| service_name | glance |
| service_type | image |
| url | http://controller:9292 |
+--------------+----------------------------------+
[root@controller1 ~]# openstack endpoint create --region RegionOne image admin http://controller:9292
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | da194b1e1e8148859a45a83fac2c7403 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 3083848116cd4706bc39241f81e3475b |
| service_name | glance |
| service_type | image |
| url | http://controller:9292 |
+--------------+----------------------------------+
Install OpenStack Glance
[root@controller ~]# yum install openstack-glance python-glance -y
Configure Glance Service
[root@controller1 ~]# cp /etc/glance/glance-api.conf{,.bak}
[root@controller1 ~]# cp /etc/glance/glance-registry.conf{,.bak}
[root@controller ~]# mkdir -p /date/glance
[root@controller1 ~]# echo "#
> [DEFAULT]
> debug = False
> verbose = True
> bind_host = controller1
> bind_port = 9292
> auth_region = RegionOne
> registry_client_protocol = http
> [database]
> connection = mysql+pymysql://glance:glance@controller/glance
> [keystone_authtoken]
> auth_uri = http://controller:5000/v3
> auth_url = http://controller:35357/v3
> memcached_servers = controller1:11211,controller2:11211,controller3:11211
> auth_type = password
> project_domain_name = default
> user_domain_name = default
> project_name = service
> username = glance
> password = glance
> [paste_deploy]
> flavor = keystone
> [glance_store]
> stores = file,http
> default_store = file
> filesystem_store_datadir = /data/glance
> [oslo_messaging_rabbit]
> rabbit_userid =openstack
> rabbit_password = openstack
> rabbit_durable_queues=true
> rabbit_ha_queues = True
> rabbit_max_retries=0
> rabbit_port = 5672
> rabbit_hosts = controller1:5672,controller2:5672,controller3:5672
> #">/etc/glance/glance-api.conf
[root@controller1 ~]# echo "#
> [DEFAULT]
> debug = False
> verbose = True
> bind_host = controller1
> bind_port = 9191
> workers = 2
> [database]
> connection = mysql+pymysql://glance:glance@controller/glance
> [keystone_authtoken]
> auth_uri = http://controller:5000/v3
> auth_url = http://controller:35357/v3
> memcached_servers = controller1:11211,controller2:11211,controller3:11211
> auth_type = password
> project_domain_name = default
> user_domain_name = default
> project_name = service
> username = glance
> password = glance
> [paste_deploy]
> flavor = keystone
> [oslo_messaging_rabbit]
> rabbit_userid =openstack
> rabbit_password = openstack
> rabbit_durable_queues=true
> rabbit_ha_queues = True
> rabbit_max_retries=0
> rabbit_port = 5672
> rabbit_hosts = controller1:5672,controller2:5672,controller3:5672
> #">/etc/glance/glance-registry.conf
[root@controller1 ~]#
Synchronize Database
[root@controller1 ~]# su -s /bin/sh -c "glance-manage db_sync" glance
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:1328: 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.
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 -> ocata01, add visibility to and remove is_public from images
INFO [alembic.runtime.migration] Running upgrade ocata01 -> pike01, drop glare artifacts tables
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
Upgraded database to: pike01, current revision(s): pike01
[root@controller1 ~]# mysql -h controller -u glance -pglance -e "use 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 |
+----------------------------------+
Start Glance Service
[root@controller1 ~]# systemctl enable openstack-glance-api openstack-glance-registry
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-glance-api.service to /usr/lib/systemd/system/openstack-glance-api.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-glance-registry.service to /usr/lib/systemd/system/openstack-glance-registry.service.
[root@controller1 ~]# systemctl restart openstack-glance-api openstack-glance-registry
[root@controller1 ~]# netstat -antp|grep python2
tcp 0 0 192.168.220.21:9292 0.0.0.0:* LISTEN 13125/python2
tcp 0 0 192.168.220.21:9191 0.0.0.0:* LISTEN 13126/python2
[root@controller1 ~]# netstat -antp|egrep '9292|9191'
tcp 0 0 192.168.220.21:9292 0.0.0.0:* LISTEN 13125/python2
tcp 0 0 192.168.220.21:9191 0.0.0.0:* LISTEN 13126/python2
tcp 32 0 192.168.220.21:39292 192.168.220.21:2224 CLOSE_WAIT 699/ruby
tcp 0 0 192.168.220.11:49292 192.168.220.23:2224 ESTABLISHED 699/ruby
Configure HAProxy For Glance
[root@controller1 ~]# echo '
> #glance_api_cluster
> listen glance_api_cluster
> bind controller:9292
> #balance source
> option tcpka
> option httpchk
> option tcplog
> server controller1 controller1:9292 check inter 2000 rise 2 fall 5
> server controller2 controller2:9292 check inter 2000 rise 2 fall 5
> server controller3 controller3:9292 check inter 2000 rise 2 fall 5
> '>>/etc/haproxy/haproxy.cfg
[[email protected] ~]# '
[root@controller1 ~]# systemctl restart haproxy.service
[root@controller1 ~]# netstat -antp|grep haproxy
tcp 0 0 192.168.220.20:9292 0.0.0.0:* LISTEN 13170/haproxy
tcp 0 0 0.0.0.0:1080 0.0.0.0:* LISTEN 13170/haproxy
tcp 0 0 192.168.220.20:35357 0.0.0.0:* LISTEN 13170/haproxy
tcp 0 0 192.168.220.20:5000 0.0.0.0:* LISTEN 13170/haproxy
tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 13170/haproxy
Create Cirros Image
[root@controller glance]# wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
--2017-12-18 02:06:45-- http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
Resolving download.cirros-cloud.net (download.cirros-cloud.net)... 64.90.42.85, 2607:f298:6:a036::bd6:a72a
Connecting to download.cirros-cloud.net (download.cirros-cloud.net)|64.90.42.85|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13267968 (13M) [text/plain]
Saving to: ‘cirros-0.3.5-x86_64-disk.img’
100%[==============================================>] 13,267,968 1.04MB/s in 13s
2017-12-18 02:06:58 (1023 KB/s) - ‘cirros-0.3.5-x86_64-disk.img’ saved [13267968/13267968]
[root@controller1 glance]# openstack image create "cirros" --file cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --public
+------------------+------------------------------------------------------+
| Field | Value |
+------------------+------------------------------------------------------+
| checksum | f8ab98ff5e73ebab884d80c9dc9c7290 |
| container_format | bare |
| created_at | 2017-12-18T07:37:04Z |
| disk_format | qcow2 |
| file | /v2/images/82e5d7d9-86a0-4266-a599-e50e8c4b0cbe/file |
| id | 82e5d7d9-86a0-4266-a599-e50e8c4b0cbe |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros |
| owner | 2291724ac1a54d65844cc5dba56f4803 |
| protected | False |
| schema | /v2/schemas/image |
| size | 13267968 |
| status | active |
| tags | |
| updated_at | 2017-12-18T07:37:05Z |
| virtual_size | None |
| visibility | public |
+------------------+------------------------------------------------------+
List OpenStack Image
[root@controller1 glance]# openstack image list
+--------------------------------------+--------+--------+
| ID | Name | Status |
+--------------------------------------+--------+--------+
| 82e5d7d9-86a0-4266-a599-e50e8c4b0cbe | cirros | active |
+--------------------------------------+--------+--------+
Configure Other Controller Nodes
[root@controller1 glance]# rsync -avzP -e 'ssh -p 22' /etc/glance/* controller2:/etc/glance/
sending incremental file list
glance-api.conf
883 100% 0.00kB/s 0:00:00 (xfer#1, to-check=44/45)
glance-api.conf.bak
150676 100% 14.37MB/s 0:00:00 (xfer#2, to-check=43/45)
glance-registry.conf
744 100% 72.66kB/s 0:00:00 (xfer#3, to-check=41/45)
glance-registry.conf.bak
77404 100% 5.27MB/s 0:00:00 (xfer#4, to-check=40/45)
metadefs/
rootwrap.d/
sent 61739 bytes received 126 bytes 123730.00 bytes/sec
total size is 504600 speedup is 8.16
[root@controller1 glance]# rsync -avzP -e 'ssh -p 22' /etc/glance/* controller3:/etc/glance/
sending incremental file list
glance-api.conf
883 100% 0.00kB/s 0:00:00 (xfer#1, to-check=44/45)
glance-api.conf.bak
150676 100% 28.74MB/s 0:00:00 (xfer#2, to-check=43/45)
glance-registry.conf
744 100% 121.09kB/s 0:00:00 (xfer#3, to-check=41/45)
glance-registry.conf.bak
77404 100% 9.23MB/s 0:00:00 (xfer#4, to-check=40/45)
metadefs/
rootwrap.d/
sent 61739 bytes received 126 bytes 123730.00 bytes/sec
total size is 504600 speedup is 8.16
[root@controller1 glance]# rsync -avzP -e 'ssh -p 22' /etc/haproxy/haproxy.cfg controller2:/etc/haproxy/
sending incremental file list
haproxy.cfg
4376 100% 3.51MB/s 0:00:00 (xfer#1, to-check=0/1)
sent 75 bytes received 73 bytes 296.00 bytes/sec
total size is 4376 speedup is 29.57
[root@controller1 glance]# rsync -avzP -e 'ssh -p 22' /etc/haproxy/haproxy.cfg controller3:/etc/haproxy/
sending incremental file list
haproxy.cfg
4376 100% 3.51MB/s 0:00:00 (xfer#1, to-check=0/1)
sent 75 bytes received 73 bytes 296.00 bytes/sec
total size is 4376 speedup is 29.57
[root@controller1 glance]#
[root@controller1 glance]# ssh controller2 "sed -i '1,10s/controller1/controller2/' /etc/glance/glance-api.conf /etc/glance/glance-registry.conf"
[root@controller1 glance]# ssh controller3 "sed -i '1,10s/controller1/controller3/' /etc/glance/glance-api.conf /etc/glance/glance-registry.conf"
Start Other Nodes’s Service
[root@controller1 glance]# ssh controller2 "systemctl enable openstack-glance-api openstack-glance-registry"
[root@controller1 glance]# ssh controller2 "systemctl restart openstack-glance-api openstack-glance-registry haproxy.service;"
[root@controller1 glance]# ssh controller3 "systemctl enable openstack-glance-api openstack-glance-registry"
[root@controller1 glance]# ssh controller3 "systemctl restart openstack-glance-api openstack-glance-registry haproxy.service;"
Add OpenStack Image API resource to Pacemaker
[root@controller1 glance]# cd /usr/lib/ocf/resource.d/openstack
[root@controller1 openstack]# wget https://git.openstack.org/cgit/openstack/openstack-resource-agents/plain/ocf/glance-api
--2017-12-18 03:00:41-- https://git.openstack.org/cgit/openstack/openstack-resource-agents/plain/ocf/glance-api
Resolving git.openstack.org (git.openstack.org)... 104.130.246.128, 2001:4800:7819:103:be76:4eff:fe06:63c
Connecting to git.openstack.org (git.openstack.org)|104.130.246.128|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11439 (11K) [text/plain]
Saving to: ‘glance-api’
100%[====================================>] 11,439 --.-K/s in 0s
2017-12-18 03:00:42 (31.5 MB/s) - ‘glance-api’ saved [11439/11439]
[root@controller1 openstack]# chmod a+rx *
[root@controller1 openstack]# ls
glance-api nova-compute-wait NovaEvacuate
Create Local Repository
[root@localrepo yum.repos.d]# wget http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-7/network:ha-clustering:Stable.repo
[root@localrepo myrepo]# reposync --repoid=network_ha-clustering_Stable
[root@localrepo myrepo]# createrepo /var/www/html/myrepo/network_ha-clustering_Stable/
[root@controller1 openstack]# cat /etc/yum.repos.d/network_ha-clustering_Stable.repo
[network_ha-clustering_Stable]
name=Stable High Availability/Clustering packages (CentOS_CentOS-7)
type=rpm-md
baseurl=http://192.168.220.200/myrepo/network_ha-clustering_Stable/
gpgcheck=0
gpgkey=http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-7/repodata/repomd.xml.key
enabled=1
Install CRMSH
[root@controller1 openstack]# yum install crmsh -y
[root@controller1 openstack]# crm configure
crm(live)configure# primitive p_glance-api ocf:openstack:glance-api \
> params config="/etc/glance/glance-api.conf" \
> os_password="admin" \
> os_username="admin" os_tenant_name="admin" \
> os_auth_url="http://controller:5000/v3/" \
> op monitor interval="30s" timeout="30s"
crm(live)configure# commit
Configure OpenStack Image service API
cp /etc/glance/glance-api.conf{,.bak}
connection = mysql+pymysql://glance:glance@controller/glance
bind_host = controller
registry_host = controller
notifier_strategy = rabbit
rabbit_host = controller
nova.conf
[glance]
api_servers = 10.0.0.11
Configure OpenStack services to use the highly available OpenStack Image API
$ openstack endpoint create --region $KEYSTONE_REGION image public http://10.0.0.10:9292
$ openstack endpoint create --region $KEYSTONE_REGION image admin http://10.0.0.11:9292
$ openstack endpoint create --region $KEYSTONE_REGION image internal http://10.0.0.11:9292