🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主
📚个人资质: CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL😜
💬格言:努力不一定成功,但要想成功就必须努力🔥🎈支持我:可点赞👍、可收藏⭐️、可留言📝
共享服务概述
有许多服务支持Red Hat OpenStack平台的大型组件。本节将回顾每一个的细节和用例。
MariaDB
MariaDB在OpenStack中用作一个通用SQL数据库,用于需要存储信息的任何组件。MariaDB Galera集群运行在控制器节点上,目前是高可用SQL数据库最流行的选择。
Redis
Redis是一个内存中的键值数据存储,它是用来替代MongoDB的。它支持发布者/订阅者模型,并可以存储几种类型的数据结构,如字符串、列表、集合、排序集合和散列。将所有数据保存在内存中可以提高性能,但Redis也可以将数据保存到磁盘在一个安全的时期。Redis是为性能而不是安全而设计的,所以应该只在受控环境中使用。
Memcached
Memcached为临时数据提供了内存中的缓存,减少了对数据源的访问次数。它使用哈希来确保对象在其实例中相对均匀地分布。实例的丢失只会导致对象的一部分丢失。OpenStack服务自动从它的实例列表中删除丢失的Memcached实例。
Pacemaker
Pacemaker是一种成熟的集群解决方案,为运行在控制器上的OpenStack服务提供了高可用性。集群服务以主动/被动的方式操作。容器化的服务也被支持为Pacemaker资源包。
CEPH MON和MDS
Ceph存储集群需要一个监视服务,Ceph MON守护进程提供了这个功能。它运行在每个控制器节点上,并形成一个Paxos兼职议会集群,它提供Ceph集群配置信息的可靠存储。为了管理Ceph文件系统命令空间并支持CephFS, Ceph Metadata Server (MDS)也运行在控制器节点上。
NOVNC和SPICE
OpenStack包括并支持两个协议,用于提供远程虚拟控制台访问,虚拟网络计算机(VNC)和用于独立计算环境的简单协议(SPICE)。缺省的VNC是一种稳定、成熟的协议,使用noVNC开源客户端在OpenStack中实现。noVNC由一个JavaScript库和一个使用HTML5和WebSockets在桌面和移动浏览器上运行的应用程序组成。
管理员可以选择使用SPICE代替VNC。SPICE是红帽支持的开放源码项目,旨在提供比现有VNC客户端更高级的特性。尽管SPICE优于VNC,但许多SPICE- html5浏览器插件并不支持这些增强特性。要使用SPICE增强功能,如多显示器、USB设备直通、音频和3D qraphics,建议使用独立的SPICE客户端从私有管理网络访问OpenStack实例。
基于浏览器的客户机使用WebSocket代理,或者是nova-novncproxy (VNC)或者是nova-spicehtml5proxy (SPICE)服务,来将远程控制台连接从公共网络连接到OpenStack管理网络。这两个协议都使用nova-consoleauth共享服务来验证客户机控制台访问请求。
使用VNC访问实例控制台这个教室环境使用默认的VNC协议。VNC控制台访问过程和组件在下面的部分和文本中描述。
每个计算节点运行一个vncserver进程,在一个或多个端口上侦听内部API网络,从5900开始,并根据该计算节点上部署的实例数量增加。每个控制器节点运行一个novncproxy进程,在同一个内部API网络的6080端口侦听。其余的服务属于具有控制器和计算节点上的组件的计算服务(Nova)。
要访问控制台,在 仪表板项目/计算/实例 屏幕上单击实例的名称,以到达实例的详细信息屏幕。单击Console子选项卡启动VNC控制台连接请求。下面的列表与前面的图形相匹配,描述了构建特定于实例的URL所产生的交互。每个已命名组件后面用括号括起其位置(节点名、网络名、端口号):
用于访问实例控制台的VNC进程流
- 一个客户端浏览器(工作站,外部),通过NoVNC插件连接到nova-api(控制节点,内部APl,端口8774),请求打开一个控制台给一个特定的在运行的服务器实例。OpenStack仪表盘连接使用haproxy(控制节点,外部,端口80)。使用CLI调用non-dashboardbrowser应用程序,该过程遵循相同的连接路径。
- Nova-api将get_vnc_console请求传递给nova-compute (计算节点,内部API, AMQP)。
- nova-compute将get_vnc_console请求传递给libvirt (compute)以定位VM的属性。
- libvirt从VM的UUID生成一个令牌,并将该令牌返回给nova-compute(计算节点,内部API,AMQP)(控制节点,内部API,AMQP)
- nova-compute将生成的令牌和connect_info对象返回给nova-api(控制节点、内部API、AMQP)
- nova-api将一个authorize_console请求传递给nova-consoleauth (compute, internal API, AMQP),它使用令牌作为索引缓存connect_info对象,以便将来发生实际连接请求时使用
- nova-api还将一个nova-novncproxy URL和特定于实例的令牌返回给浏览器(工作站、外部)。
注意: 图2.5底部的URL。当鼠标悬停在蓝色消息区域中的可单击链接上时,该URL位于仪表板屏幕的底部,包含用于请求服务器实例演示的令牌和实例ID的内联参数。
图2.5:构建的nova-novncproxy实例特定的URL
计算服务之前已经获得了实例的连接信息,并将其缓存到控制台授权服务中。传递给浏览器的URL不是目标实例控制台的直接地址,而是nova-novncproxy地址,它有助于反向代理允许目标实例初始化控制台屏幕刷新到用户的浏览器。下面的列表描述了在点击URL时完成反向代理VNC连接的前一个图形的其余交互:
- 浏览器(工作站,外部)连接到URL,由仪表板的haproxy代理(控制节点,外部,端口6080)到达nova-novncproxy(控制节点,内部APl,端口6080)。
- novncproxy从URL解析令牌和实例ID,并将其传递给nova-consoleauth (控制节点,内部API, AMQP)。
- 使用这个令牌,nova-consoleauth从缓存中检索connect_info对象,并将其返回给nova-novncproxy(控制节点,内部API)
- novncproxy在为请求的VM指定的端口上直接连接到vncserver(计算节点,内部API, 5900+),并创建一个反向代理配置。
- nova-novncproxy通过仪表板haproxy发送控制台图形回用户的浏览器(工作站,外部)。
管理OVERCLOUD的启动和关闭
正常运行的OpenStack云需要在云下节点和活动云上的控制平面服务之间进行持续的通信和协调。一旦云上(overcloud)被正确部署并投入服务,它就有望永久运行。为了维护或升级,可能会暂时禁用单个节点,但不会关闭整个overcloud,除非出现一些意外或危急情况。
无论如何,OpenStack管理员应该能够正确地关闭和启动一个overcloud。了解关键服务的依赖顺序可以增强对控制平面服务和基础架构的理解。一个overcloud可以使用高可用性(HA)控制器配置,将存储分布在Ceph服务器和超融合节点上,或者使用定制的可组合角色,每个角色都会影响必要的命令序列。下面的叙述以这个教室的非ha架构为例。
重要:这里描述的过程是一个教育概述。它的结构只是为了在这个课程环境中执行优雅的关闭。生产中的OpenStack安装,过程必须针对特定的overcloud集群定制。
警告:正确地关闭一个overcloud集群需要时间。时间限制限制了学生在每次课程会话中干净地关闭和启动OpenStack集群的能力。相反,本课程使用更快但不优雅的技术,解释在课程介绍。课堂捷径在课程介绍中不应该被认为是可接受的生产环境。
正确关闭Red Hat OpenStack
红帽OpenStack平台是一个云基础设施,旨在永久运行。除特殊情况外,云下和云上不能完全关闭。控制节点安装采用高可用性设计,计算节点充足。存储节点被设计用于可扩展的冗余和复制。单个节点可以临时禁用或重新引导以进行维护,而不会影响OpenStack云的其余部分的安全操作。
仍然可能出现需要完全关闭本地OpenStack集群的情况。以下过程按照推荐的顺序进行描述,以确保工作负载数据被安全存储,服务和数据库被干净地停止,从而避免可能的服务或数据损坏。
在关闭overcloud之前,必须首先停止所有项目工作负载。停止(而不是终止)overcloud中所有计算节点上运行的实例。要列出在计算节点上运行的所有实例,使用以下命令:
使用显示的实例uuid来停止每个实例。在生产中,许多应用程序都有要在实例上或从该应用程序的控制台接口运行的关闭过程,如这里所示关闭服务器实例可能是不希望的。
当实例停止时,继续关闭overcloud计算节点。关闭计算节点将停止与存储节点的连接。
依次登录到每个计算节点并关机:
谨慎:在课堂环境中,controller0是Ceph管理节点。要正确关闭Ceph,请在登录到ceph0之前将Ceph 标记从controller0设置为关闭,然后返回到controllero停止pacemaker集群。首先停止pacemaker集群将正确地禁用Ceph servers的管理控制。
设置noout、norecover、norebalance、nobackfill、nodown和pause标志。
登录到每个Ceph节点并关闭它:
需要停止其余的OpenStack服务,以确保系统和数据的完整性。在每个控制节点上,运行以下命令并等待集群停止:
在每个控制器节点上,关闭它们,直到所有操作完成。
overcloud现已关闭。要关闭完整的Red Hat OpenStack,还需要关闭undercloud系统。如果关闭了undercloud,重新启动将需要使用classroom-environment-specific的指令来启动director系统,然后才能重新启动overcloud。
在生产环境中,完整的OpenStack集群现在已经关闭。其他补充的非openstack系统可能也需要关闭电源。
正确启动Red Hat OpenStack
红帽OpenStack平台中的大多数服务被设计为启动和等待它们的依赖项,即使节点和服务的启动顺序不正常。但是,按照推荐的顺序启动节点将尽可能减少竞争条件和启动延迟。
在启动overcloud之前,必须运行undercloud。当undercloud可用时,登录到director系统。验证nova-compute服务已启动。
检查所有节点的电源状态。如果尚未启动ceph0节点,则首先启动该节点。
如果尚未启动controller0节点,则启动该节点,然后登录并启动集群。
在controller0上,清除noout、norecover、norebalance、nobackfill、nodown和pause标志,以允许Ceph存储服务器再次处理正常的恢复任务。
当集群恢复联机时,如果overcloud计算节点尚未启,则在其上运行。
启动之前关闭的任何所需的项目服务器实例。overcloud现在已经完全启动。
课本练习
- MariaDB数据库列表。
- 停止和启动集群资源。
- 验证Redis的功能。
- 验证Memcached的功能。
- 从命令行连接到实例控制台。
[student@workstation ~]$ lab controlplane-services setup
Setting up workstation for lab exercise work:
• Verifying project: finance.................................. SUCCESS
• Creating user env file: developer1-finance-rc............... SUCCESS
• Creating keypair: example-keypair........................... SUCCESS
. Creating flavor: default.................................... SUCCESS
. Creating image: rhel7....................................... SUCCESS
. Creating internal network: finance-network1................. SUCCESS
. Creating subnet: finance-subnet1............................ SUCCESS
. Creating external network: provider-datacentre.............. SUCCESS
. Creating router: finance-router1............................ SUCCESS
. Creating security group: default............................ SUCCESS
. Checking floating ip availability: 1........................ SUCCESS
. Creating instance: finance-server3.......................... SUCCESS
. Adding fip to instance: finance-server3..................... SUCCESS
1. 从工作站,使用SSH连接到controller0。使用sudo -i命令成为根用户。
[student@workstation ~]$ ssh controller0
[heat-admin@controller0 ~]$ sudo -i
[root@controller0 ~]#
2. 检查Ceph监视器服务的状态。请注意被调用的细节。
[root@controller0 ~]# systemctl status ceph-mon@controller0.service -l -n 0
● ceph-mon@controller0.service - Ceph Monitor
Loaded: loaded (/etc/systemd/system/ceph-mon@.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2020-10-17 01:47:23 UTC; 11h ago
Process: 7732 ExecStartPre=/usr/bin/docker rm ceph-mon-%i (code=exited, status=1/FAILURE)
Main PID: 7773 (docker-current)
CGroup: /system.slice/system-ceph\x2dmon.slice/ceph-mon@controller0.service
└─7773 /usr/bin/docker-current run --rm --name ceph-mon-controller0 --net=host --memory=1g --cpu-quota=100000 -v /var/lib/ceph:/var/lib/ceph:z -v /etc/ceph:/etc/ceph:z -v /var/run/ceph:/var/run/ceph:z -v /etc/localtime:/etc/localtime:ro --net=host -e IP_VERSION=4 -e MON_IP=172.24.3.1 -e CLUSTER=ceph -e FSID=fe8e3db0-d6c3-11e8-a76d-52540001fac8 -e CEPH_PUBLIC_NETWORK=172.24.3.0/24 -e CEPH_DAEMON=MON 172.25.249.200:8787/rhceph/rhceph-3-rhel7:latest
3. 检查Ceph元数据服务器服务的状态。请注意被调用的细节。
[root@controller0 ~]# systemctl status ceph-mds@controller0.service -l -n 0
● ceph-mds@controller0.service - Ceph MDS
Loaded: loaded (/etc/systemd/system/ceph-mds@.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2020-10-17 01:47:24 UTC; 11h ago
Process: 7787 ExecStartPre=/usr/bin/docker rm ceph-mds-controller0 (code=exited, status=1/FAILURE)
Process: 7731 ExecStartPre=/usr/bin/docker stop ceph-mds-controller0 (code=exited, status=1/FAILURE)
Main PID: 7809 (docker-current)
CGroup: /system.slice/system-ceph\x2dmds.slice/ceph-mds@controller0.service
└─7809 /usr/bin/docker-current run --rm --net=host --memory=4g --cpu-quota=100000 -v /var/lib/ceph:/var/lib/ceph:z -v /etc/ceph:/etc/ceph:z -v /var/run/ceph:/var/run/ceph:z -v /etc/localtime:/etc/localtime:ro -e CLUSTER=ceph -e CEPH_DAEMON=MDS -e MDS_NAME=controller0 --name=ceph-mds-controller0 172.25.249.200:8787/rhceph/rhceph-3-rhel7:latest
4.列出MariaDB数据库,查看哪些组件在关系数据库中存储数据。
4.1. 在galera-bundle-docker-0容器内执行mysql -uroot -e “show databases;” 命令。
[root@controller0 ~]# docker exec -t galera-bundle-docker-0 mysql -u root -e "show databases;"
+--------------------+
| Database |
+--------------------+
| aodh |
| cinder |
| glance |
| gnocchi |
| heat |
| information_schema |
| keystone |
| manila |
| mysql |
| nova |
| nova_api |
| nova_cell0 |
| nova_placement |
| octavia |
| ovs_neutron |
| panko |
| performance_schema |
+--------------------+
4.2.除了在Galera容器内执行命令之外,还可以从外部查询MariaDB。找到MariaDB root用户的密码。
[root@controller0 ~]# grep password /var/lib/config-data/puppet-generated/mysql/root/.my.cnf
password="dgMgg8QfNM"
password="dgMgg8QfNM"
4.3 确定MariaDB正在监听的接口
[root@controller0 ~]# netstat -lntup | grep 3306
tcp 0 0 172.24.1.1:3306 0.0.0.0:* LISTEN 21501/mysqld
tcp 0 0 172.24.1.50:3306 0.0.0.0:* LISTEN 20149/haproxy
4.4 连接到MariaDB并列出数据库。任何一个接口都可以工作,HAProxy将连接通过MariaDB。
[root@controller0 ~]# mysql -uroot -p'dgMgg8QfNM' -h172.24.1.50
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 42753
Server version: 10.1.20-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| aodh |
| cinder |
| glance |
| gnocchi |
| heat |
| information_schema |
| keystone |
| manila |
| mysql |
| nova |
| nova_api |
| nova_cell0 |
| nova_placement |
| octavia |
| ovs_neutron |
| panko |
| performance_schema |
+--------------------+
17 rows in set (0.01 sec)
5. 查询Redis以确保它是可用的。
5.1 找到Redis密码。
[root@controller0 ~]# docker exec -t redis-bundle-docker-0 grep ^requirepass /etc/redis.conf
requirepass wuTuATnYuMrzJQGj8KxBb6ZAW
5.2 确定Redis正在监听的接口。
[root@controller0 ~]# netstat -lntup | grep redis
tcp 0 0 172.24.1.1:6379 0.0.0.0:* LISTEN 20718/redis-server
5.3.使用redis-cli命令连接到Redis。使用AUTH命令和前面检索到的密码进行身份验证。
[root@controller0 ~]# redis-cli -h 172.24.1.1
172.24.1.1:6379> AUTH wuTuATnYuMrzJQGj8KxBb6ZAW
OK
172.24.1.1:6379>
5.4 使用keys命令列出所有键。注意,你的结果可能会有所不同。确定gnocchi-config密钥的类型。使用HGETALL命令获取键的所有散列值。退出Redis CLI。
172.24.1.1:6379> KEYS *
1) "gnocchi-config"
2) "_tooz_beats:b72e63fc-5ddc-431e-acd7-9194b5b8a1d9"
3) "_tooz_group:compute-computehci0.overcloud.example.com"
4) "_tooz_beats:controller0.0.2192bc52-2128-4ea5-a600-b23cc129ba5b"
5) "_tooz_beats:12110a1e-a1d0-4267-9c54-93b37eb7d666"
6) "_tooz_beats:9d43efef-c661-40a7-b7a2-75f40fe32000"
7) "_tooz_group:compute-compute1.overcloud.example.com"
8) "_tooz_beats:dccd4c89-79fd-4063-a719-f3be6d6def1a"
9) "_tooz_group:gnocchi-processing"
10) "_tooz_group:central-global"
11) "_tooz_beats:de9d1846-ea3b-458a-8f49-f2003231f131"
12) "_tooz_group:compute-compute0.overcloud.example.com"
13) "_tooz_group:alarm_evaluator"
14) "_tooz_groups"
15) "_tooz_beats:controller0.0.8abb0c5f-870a-4dee-b232-94f2c1671ad4"
172.24.1.1:6379> TYPE gnocchi-config
hash
172.24.1.1:6379> HGETALL gnocchi-config
1) "sacks"
2) "128"
6. 检查memcached。
6.1 确定Memcached正在监听的接口。
[root@controller0 ~]# netstat -lntup | grep memcache
tcp 0 0 172.24.1.1:11211 0.0.0.0:* LISTEN 6662/memcached
6.2. 在memcached容器内执行memcached-tool命令。默认情况下,这会显示slab class的类统计信息。
[root@controller0 ~]# docker exec -t memcached memcached-tool 172.24.1.1
# Item_Size Max_age Pages Count Full? Evicted Evict_Time OOM
4 192B 778s 1 1 yes 0 0 0
5 240B 39432s 1 6 yes 0 0 0
6 304B 117s 1 1 yes 0 0 0
7 384B 0s 1 0 yes 0 0 0
22 10.8K 39432s 1 3 yes 0 0 0
23 13.6K 117s 1 4 yes 0 0 0
39 482.0K 39175s 1 1 yes 0 0 0
上面有两个slab类。注意,你的结果可能会有所不同。我们可以看到大小,年龄和其他相关信息。
6.3 使用stats选项再次执行memcached-tool。
[root@controller0 ~]# docker exec -t memcached memcached-tool 172.24.1.1 stats
#172.24.1.1:11211 Field Value
accepting_conns 1
auth_cmds 0
auth_errors 0
bytes 476042
bytes_read 8410477
bytes_written 85532516
cas_badval 0
cas_hits 0
cas_misses 0
cmd_flush 0
cmd_get 7943
cmd_set 1156
cmd_touch 0
conn_yields 0
connection_structures 10
crawler_items_checked 0
crawler_reclaimed 0
curr_connections 8
curr_items 15
decr_hits 0
decr_misses 0
delete_hits 2
delete_misses 2
evicted_unfetched 0
evictions 0
expired_unfetched 306
get_expired 411
get_flushed 0
get_hits 7358
get_misses 585
hash_bytes 524288
hash_is_expanding 0
hash_power_level 16
incr_hits 0
incr_misses 0
libevent 2.0.21-stable
limit_maxbytes 4100980736
listen_disabled_num 0
log_watcher_sent 0
log_watcher_skipped 0
log_worker_dropped 0
log_worker_written 0
lrutail_reflocked 0
malloc_fails 0
pid 7
pointer_size 64
reclaimed 428
reserved_fds 10
rusage_system 4.679432
rusage_user 5.372454
threads 2
time 1602941900
time_in_listen_disabled_us 0
total_connections 58
total_items 1156
touch_hits 0
touch_misses 0
uptime 42679
version 1.4.39
这里有几条信息:
- curr_items 的值应该与 slab 类输出中的count列的总数相匹配。
- cmd_set 和cmd_get 值表示缓存比率。cmd_get 值应该更高,否则您的存储项可能过期太快。
- get_misses 的值表示某项不存在的频率。
7. 使用pcs命令管理pacemaker资源。
7.1 使用pcs resource show命令检查所有pacemaker资源的状态。
[root@controller0 ~]# pcs resource show
Docker container: rabbitmq-bundle [172.25.249.200:8787/rhosp13/openstack-rabbitmq:pcmklatest]
rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started controller0
Docker container: galera-bundle [172.25.249.200:8787/rhosp13/openstack-mariadb:pcmklatest]
galera-bundle-0 (ocf::heartbeat:galera): Master controller0
Docker container: redis-bundle [172.25.249.200:8787/rhosp13/openstack-redis:pcmklatest]
redis-bundle-0 (ocf::heartbeat:redis): Master controller0
ip-172.25.249.50 (ocf::heartbeat:IPaddr2): Started controller0
ip-172.25.250.50 (ocf::heartbeat:IPaddr2): Started controller0
ip-172.24.1.51 (ocf::heartbeat:IPaddr2): Started controller0
ip-172.24.1.50 (ocf::heartbeat:IPaddr2): Started controller0
ip-172.24.3.50 (ocf::heartbeat:IPaddr2): Started controller0
ip-172.24.4.50 (ocf::heartbeat:IPaddr2): Started controller0
Docker container: haproxy-bundle [172.25.249.200:8787/rhosp13/openstack-haproxy:pcmklatest]
haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started controller0
Docker container: ovn-dbs-bundle [172.25.249.200:8787/rhosp13/openstack-ovn-northd:latest]
ovn-dbs-bundle-0 (ocf::ovn:ovndb-servers): Master controller0
Docker container: openstack-cinder-volume [172.25.249.200:8787/rhosp13/openstack-cinder-volume:pcmklatest]
openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started controller0
Docker container: openstack-manila-share [172.25.249.200:8787/rhosp13/openstack-manila-share:pcmklatest]
openstack-manila-share-docker-0 (ocf::heartbeat:docker): Started controller0
7.2 禁用openstack-manila-share资源。再次执行pcs resource show确认。
[root@controller0 ~]# pcs resource disable openstack-manila-share
[root@controller0 ~]# pcs resource show
Docker container: rabbitmq-bundle [172.25.249.200:8787/rhosp13/openstack-rabbitmq:pcmklatest]
rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started controller0
Docker container: galera-bundle [172.25.249.200:8787/rhosp13/openstack-mariadb:pcmklatest]
galera-bundle-0 (ocf::heartbeat:galera): Master controller0
Docker container: redis-bundle [172.25.249.200:8787/rhosp13/openstack-redis:pcmklatest]
redis-bundle-0 (ocf::heartbeat:redis): Master controller0
ip-172.25.249.50 (ocf::heartbeat:IPaddr2): Started controller0
ip-172.25.250.50 (ocf::heartbeat:IPaddr2): Started controller0
ip-172.24.1.51 (ocf::heartbeat:IPaddr2): Started controller0
ip-172.24.1.50 (ocf::heartbeat:IPaddr2): Started controller0
ip-172.24.3.50 (ocf::heartbeat:IPaddr2): Started controller0
ip-172.24.4.50 (ocf::heartbeat:IPaddr2): Started controller0
Docker container: haproxy-bundle [172.25.249.200:8787/rhosp13/openstack-haproxy:pcmklatest]
haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started controller0
Docker container: ovn-dbs-bundle [172.25.249.200:8787/rhosp13/openstack-ovn-northd:latest]
ovn-dbs-bundle-0 (ocf::ovn:ovndb-servers): Master controller0
Docker container: openstack-cinder-volume [172.25.249.200:8787/rhosp13/openstack-cinder-volume:pcmklatest]
openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started controller0
Docker container: openstack-manila-share [172.25.249.200:8787/rhosp13/openstack-manila-share:pcmklatest]
openstack-manila-share-docker-0 (ocf::heartbeat:docker): Stopped (disabled)
7.3 启用openstack-manila-share资源。执行pc resource show openstack-manila-share命令来查看资源的详细信息。
[root@controller0 ~]# pcs resource enable openstack-manila-share
[root@controller0 ~]# pcs resource show openstack-manila-share
Bundle: openstack-manila-share
Docker: image=172.25.249.200:8787/rhosp13/openstack-manila-share:pcmklatest network=host options="--ipc=host --privileged=true --user=root --log-driver=journald -e KOLLA_CONFIG_STRATEGY=COPY_ALWAYS" replicas=1 run-command="/bin/bash /usr/local/bin/kolla_start"
Storage Mapping:
options=ro source-dir=/var/lib/kolla/config_files/manila_share.json target-dir=/var/lib/kolla/config_files/config.json (manila-share-cfg-files)
options=ro source-dir=/var/lib/config-data/puppet-generated/manila/ target-dir=/var/lib/kolla/config_files/src (manila-share-cfg-data)
options=ro source-dir=/etc/hosts target-dir=/etc/hosts (manila-share-hosts)
options=ro source-dir=/etc/localtime target-dir=/etc/localtime (manila-share-localtime)
options=rw source-dir=/dev target-dir=/dev (manila-share-dev)
options=rw source-dir=/run target-dir=/run (manila-share-run)
options=rw source-dir=/sys target-dir=/sys (manila-share-sys)
options=ro source-dir=/lib/modules target-dir=/lib/modules (manila-share-lib-modules)
options=rw source-dir=/var/lib/manila target-dir=/var/lib/manila (manila-share-var-lib-manila)
options=ro source-dir=/etc/pki/ca-trust/extracted target-dir=/etc/pki/ca-trust/extracted (manila-share-pki-extracted)
options=ro source-dir=/etc/pki/tls/certs/ca-bundle.crt target-dir=/etc/pki/tls/certs/ca-bundle.crt (manila-share-pki-ca-bundle-crt)
options=ro source-dir=/etc/pki/tls/certs/ca-bundle.trust.crt target-dir=/etc/pki/tls/certs/ca-bundle.trust.crt (manila-share-pki-ca-bundle-trust-crt)
options=ro source-dir=/etc/pki/tls/cert.pem target-dir=/etc/pki/tls/cert.pem (manila-share-pki-cert)
options=rw source-dir=/var/log/containers/manila target-dir=/var/log/manila (manila-share-var-log)
options=ro source-dir=/etc/ceph target-dir=/etc/ceph (manila-share-ceph-cfg-dir)
8. 连接到实例的控制台。
8.1 在finance项目中为developer1获取环境文件。获取finance-server3实例的控制台URL。
[student@workstation ~(developer1-finance)]$ openstack console url show -c url -f value finance-server3
http://172.25.250.50:6080/vnc_auto.html?token=604145b1-aa48-4dd5-902c-7aefef9cb258
注意控制台URL中的端口值为6080
8.2 登录到controller0,然后成为root用户。显示正在端口上监听的进程6080.
[root@controller0 ~]# ss -lntup | grep 6080
tcp LISTEN 0 128 172.25.250.50:6080 *:* users:(("haproxy",pid=20149,fd=31))
tcp LISTEN 0 128 172.24.1.50:6080 *:* users:(("haproxy",pid=20149,fd=30))
tcp LISTEN 0 100 172.24.1.1:6080 *:* users:(("nova-novncproxy",pid=4147,fd=4))
请注意,nova-novncproxy是我们要连接的服务。它由外部网络上的HAProxy前端,允许用户连接到管理网络上的实例控制台。
8.3 连接到URL以验证服务正在工作。
清除实验
[student@workstation ~]$ lab controlplane-services cleanup
章节实验
- 更改容器化服务的配置。
- 验证使用Memcached进行令牌缓存。
[student@workstation ~]$ lab controlplane-review setup
- 确定memcached get_hits参数的当前增长率。
- 为controller0上的ldentity服务启用令牌缓存。使用下表中的设置来配置/var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf
- 使用openstack命令测试memcached get_hits参数的值是否急剧增加。
1. 确定memcached get_hits参数的当前增长率。
1.1从工作站,登录到controllero,并更改为根用户。
[student@workstation ~]$ ssh controller0
Last login: Sat Oct 17 13:06:30 2020 from 172.25.250.254
[heat-admin@controller0 ~]$ sudo -i
[root@controller0 ~]#
1.2 使用watch命令监视get_hits参数。
[root@controller0 ~]# watch -n 5 "memcached-tool 172.24.1.1 stats | grep -A 2 get_hits"
Every 5.0s: memcached-tool 172.24.1.1 stats | grep -A 2 get_hits Sat Oct 17 14:09:38 2020
get_hits 7761
get_misses 628
hash_bytes 524288
注意,这个比率的变化相当缓慢。
2.为controller0上的ldentity服务启用令牌缓存。使用下表中的设置来配置 /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf。
2.1 在工作站上打开一个新的终端,使用SSH连接到controller0,然后成为根用户。
[student@workstation ~]$ ssh controller0
Last login: Sat Oct 17 13:06:30 2020 from 172.25.250.254
[heat-admin@controller0 ~]$ sudo -i
[root@controller0 ~]#
2.2 使用crudini修改相关选项。
[root@controller0 ~]# crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf cache enabled true
[root@controller0 ~]# crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf cache backend dogpile.cache.memcached
[root@controller0 ~]# crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf cache backend_argument url:172.24.1.1:11211
[root@controller0 ~]# crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf catalog caching false
[root@controller0 ~]# crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf domain_config caching false
[root@controller0 ~]# crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf federation caching false
[root@controller0 ~]# crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf revoke caching false
[root@controller0 ~]# crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf role caching false
[root@controller0 ~]# crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf token caching true
[root@controller0 ~]# crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf token cache_on_issue true
[root@controller0 ~]# crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf identity caching false
2.3 重新启动keystone容器以实现更改。
[root@controller0 ~]# docker restart keystone
keystone
[root@controller0 ~]#
3. 使用openstack命令测试memcached get_hits参数的值是否急剧增加
3.1 在第一个终端中,验证get_hits的当前值。
Every 5.0s: memcached-tool 172.24.1.1 stats | grep -A 2 get_hits Sat Oct 17 14:20:56 2020
get_hits 7867
get_misses 636
hash_bytes 524288
3.2 在第二个终端中,在生产项目中加载operator1环境文件。执行几个openstack命令。
[student@workstation ]$ source operator1-production-rc
[student@workstation ~(operator1-production)]$ openstack image list -f json
[student@workstation ~(operator1-production)]$ openstack flavor list -f json
[student@workstation ~(operator1-production)]$ openstack network list -f json
[student@workstation ~(operator1-production)]$ openstack subnet list -f json
3.3 在第一个终端中,重新检查get_hits的值。
Every 5.0s: memcached-tool 172.24.1.1 stats | grep -A 2 get_hits Sat Oct 17 14:22:59 2020
get_hits 7993
get_misses 1019
hash_bytes 524288
实验评分
[student@workstation ~]$ lab controlplane-review grade
Grading the student's work on workstation:
. Checking Identity service configuration: controller0........ PASS
Overall lab grade.............................................. PASS
清除实验
[student@workstation ~]$ lab controlplane-review cleanup
总结
- APl端点可以通过使用服务目录来发现。网络对端点进行分类,以避免敏感信息的暴露。
- 所有红帽OpenStack平台组件都使用AMQP-compliant 信息系统相互通信。RabbitMQ是默认的,但是也可以使用其他消息传递后端。组件使用在消息传递系统之上实现的RPC进行通信。Oslo消息传递库将进程间通信从AMQP中抽象出来,因此开发人员不需要理解它。
- RabbitMQ有一个跟踪特性,允许管理员查看通过消息传递系统传递的消息。跟踪会增加开销,所以应该只在需要时启用。
- 有许多支持主要组件的服务。它们允许组件在关系或非关系数据库中存储数据,在内存中执行缓存以提高性能,并允许用户连接到实例控制台。
RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。
以上就是【金鱼哥】对 第二章 描述OPENSTACK控制平面--识别overclound控制平台服务+章节实验 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。
💾 红帽认证专栏系列:
RHCSA专栏: 戏说 RHCSA 认证
RHCE专栏: 戏说 RHCE 认证
此文章收录在RHCA专栏: RHCA 回忆录
如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。
如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!