Water's Home

Just another Life Style

0%

Highly available Image API

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 -antpgrep 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 -antpegrep ‘92929191’
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
[root@controller1 ~]# ‘
[root@controller1 ~]# systemctl restart haproxy.service
[root@controller1 ~]# netstat -antpgrep 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