DAY ONE - PM
修改容器配置文件的两种方法:
-
登陆DOCKER内,修改相应配置文件
[root@controller0 ~] docker exec -it keystone bash ()[root@controller0 /] vi /etc/keystone/keystone.conf
-
登陆controller0 修改容器映射的配置,下面目录为docker配置文件映射目录,docker目录对应运行docker名称
cd /var/lib/config-data/puppet-generated/
查看dashboard的ip地址(docker:horizon)
(undercloud) [stack@director ~]$ cat overcloudrc
# Clear any old environment that may conflict.
for key in $( set | awk '{FS="="} /^OS_/ {print $1}' ); do unset $key ; done
export OS_NO_CACHE=True
export COMPUTE_API_VERSION=1.1
export OS_USERNAME=admin
export no_proxy=,172.25.250.50,172.25.249.50
export OS_USER_DOMAIN_NAME=Default
export OS_VOLUME_API_VERSION=3
export OS_CLOUDNAME=overcloud
export OS_AUTH_URL=http://172.25.250.50:5000//v3 #访问外网的地址,是keystone,同时也是 dashboard-ip
export NOVA_VERSION=1.1
export OS_IMAGE_API_VERSION=2
export OS_PASSWORD=redhat #
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3
export OS_PROJECT_NAME=admin
export OS_AUTH_TYPE=password
export PYTHONWARNINGS="ignore:Certificate has no, ignore:A true SSLContext object is not available"
# Add OS_CLOUDNAME to PS1
if [ -z "${CLOUDPROMPT_ENABLED:-}" ]; then
export PS1=${PS1:-""}
export PS1=\${OS_CLOUDNAME:+"(\$OS_CLOUDNAME)"}\ $PS1
export CLOUDPROMPT_ENABLED=1
fi
考试时候,不会告诉dashboard的IP地址:export OS_AUTH_URL=http://172.25.250.50:5000//v3
用户名:export OS_USERNAME=admin
密码:export OS_PASSWORD=redhat
看一下overcloudrc文件的IP地址。
dashboard容器名称:horizon,在controller0上
考试时候绝大部分会遇到,访问不了,打不开。 需要重启horizon这个容器。或者修改horizon之后,也需要重启docker。
指令:docker restart horizon
练习:VIEWING THE UNDERCLOUD ARCHITECTURE
特殊用户heat-admin是免密用户,sudo -i直接可以切换到root。
注意:swift容器状态不正常外,其他容器状态应该都正常。
关于网络查看命令
(undercloud) [stack@director ~]$ openstack subnet list
+--------------------------------------+---------------------+--------------------------------------+-----------------+
| ID | Name | Network | Subnet |
+--------------------------------------+---------------------+--------------------------------------+-----------------+
| 1653cf28-1da7-4bb7-b060-872a0da6c0d1 | external_subnet | 444ad6f9-7ad8-43d6-a825-37ff9cbc63c5 | 172.25.250.0/24 |
| 243a4564-e344-4d80-9eeb-972287a4b8ae | management_subnet | 37a81453-9f5e-415d-90e5-14bdb1858806 | 172.24.5.0/24 |
| 30e75947-64c2-4961-9b49-67b066e54fe8 | internal_api_subnet | 60c574f1-cb7d-4f37-8dd6-4f76a2d0218c | 172.24.1.0/24 |
| 45dce459-6e9d-40dc-a4d5-ef2e91de6ec7 | ctlplane-subnet | 2c9cee9a-e797-462e-ba76-efaa564b7b7f | 172.25.249.0/24 |
| be6d8ef9-ea6a-436f-a1f7-2d085336667c | storage_mgmt_subnet | 7029b988-a1a2-405d-9809-d051c8a726d8 | 172.24.4.0/24 |
| d551f63e-d144-4c0a-8a1b-8892aa40ae78 | tenant_subnet | d1cc495b-dda5-4c0e-812a-bd79708716d4 | 172.24.2.0/24 |
| f8b997e4-f5f5-46ac-92a2-079340aa0dde | storage_subnet | 352efe55-3af2-4e26-abf6-6f2d388c6a1a | 172.24.3.0/24 |
+--------------------------------------+---------------------+--------------------------------------+-----------------+
(undercloud) [stack@director ~]$ openstack subnet show external_subnet
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| allocation_pools | 172.25.250.60-172.25.250.99 |
| cidr | 172.25.250.0/24 |
| created_at | 2018-10-23T13:55:27Z |
| description | |
| dns_nameservers | |
| enable_dhcp | False |
| gateway_ip | 172.25.250.254 |
| host_routes | |
| id | 1653cf28-1da7-4bb7-b060-872a0da6c0d1 |
| ip_version | 4 |
| ipv6_address_mode | None |
| ipv6_ra_mode | None |
| name | external_subnet |
| network_id | 444ad6f9-7ad8-43d6-a825-37ff9cbc63c5 |
| project_id | f50fbd0341134b97a5a735cca5d6255c |
| revision_number | 0 |
| segment_id | None |
| service_types | |
| subnetpool_id | None |
| tags | |
| updated_at | 2018-10-23T13:55:27Z |
+-------------------+--------------------------------------+
练习命令
- openstack subnet list –> 查看自网络信息:
- openstack subnet show external_subnet –> 查看自网络详细信息
- docker images –> 列出用于创建服务器的景象;
- docker inspect –> 检查容器
- docker logs –> 检查keystone启动日志文件;
- docker exec –> 确定keystone容器中OpenStack服务器状态:docker exec -it keystone /openstack/healthcheck;
- docker stop –> 停止容器;
描述OVERCLOUD
Openstack核心组件
私有管理平台->Iaas管理平台
控制器节点上的OpenStack核心服务
组件名 | 作用 | 描述 |
---|---|---|
★ keystone | 身份验证 | 所有组件都需要身份验证 |
★ glance | 镜像服务 | 云主机镜像启动 |
★ nova | 核心计算服务controller和compute | 控制节点角色:资源管理和调度 |
heat | 编排 | 模板,批量化创建主机与应用 |
swift | 对象存储 | 默认3副本 |
cinder | 块存储 | 附加存储,需要格式化 |
★ neutron | 网络服务 | 相当于公有云VPC SDN,虚拟网络、子网、路由器和防火墙等 |
mysql/mariadb | 数据库 | |
RabbitMQ | 消息队列 | 消息传递服务提供多种OpenStack服务之间的内部通信。 |
ceilmeter | 计费 | |
manila | 共享文件系统服务 | |
octavia | 负载平衡服务 | |
gnocchi | 指标服务 | 提供有关云使用量、账单、放置、退款和容量规划的智能分析。 |
mistral | 工作流服务 | |
redis | 内存数据库 | |
memcached | 缓存数据库 | |
pacemaker | 集群软件 | 关键服务、组件都是集群的。 |
noVNC | 终端软件console | 访问复杂图形化SPICE(相当于RDP) |
OVERCLOUD上操作
openstack user list –> 每一个组件都对应了keystone 一个用户;
创建云主机
-
创建project
-
划分资源给project
-
创建用户分配给project,选择角色
-
创建实例,需要什么资源?镜像、私有网络、规格(vcpu\mem\storage)、安全组和keypair(OpenStack只能使用密钥登陆)、公网地址(浮动ip)。
操作:顶部先选择 –> amdin –> Project –> Create Project -> Create User
login user1 -> image –> Create Image –> 顶部先选择 –> amdin -> flavor -> 自己的network -> Create Router -> Add interface -> Security Group -> add rule -> compute -> keypairs -> instance -> Manage Floating IP Associatios -> view log -> ssh -I key1.pem cloud-user@172.25.250.X
配置overcloudrc文件,cp overcloudrc overcloudrc-user1修改OS_PROJECT_NAME=project1,OS_USERNAME=user1,验证openstack server list.
镜像地址:materials.example.com中的osp-small.qcow2,下载到当前主机上
wget http://materials.example.com/osp-small.qcow2
查看image详细信息
[root@foundation9 ~]# qemu-img info osp-small.qcow2 image: osp-small.qcow2 file format: qcow2 virtual size: 10G (10737418240 bytes) disk size: 1.5G cluster_size: 65536 Format specific information: compat: 0.10 refcount bits: 16
私有网络不设置网关,DHCP必须开启。不要忘记内部和外部建立虚拟路由器
密钥权限修改为600,否则可能登陆提示密钥安全,**拒绝登陆**。
[root@foundation9 Downloads]# ssh -i user-bash: warning: setlocale: LC_CTYPE: cannot change locale (zh_CN.UTF-8) -bash: warning: setlocale: LC_CTYPE: cannot change locale (zh_CN.UTF-8) 1-key1.pem cloud-user@172.25.250.108 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for 'user1-key1.pem' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "user1-key1.pem": bad permissions cloud-user@172.25.250.108: Permission denied (publickey,gssapi-keyex,gssapi-with-mic). [root@foundation9 Downloads]# chmod 600 user1-key1.pem [root@foundation9 Downloads]# ssh -i user1-key1.pem cloud-user@172.25.250.108 [cloud-user@user1-instance1 ~]$
创建卷
Volume -> Create Volume -> Manage Attachment -> OS:格式化
附件存储:当时instance删除后,附加存储还存在,可以加载到新的instance里。
第二章 openstack控制平面
keystone服务三要素
- 用户(user)
- 服务(service)
- 终端(endpoint)
常用指令
openstack catelog list
– 列出每个服务的endpiont
有3个url地址:
1,Public(外网地址);
2,internal(内网地址);
3,admin(管理网络).
(overcloud) [stack@director ~]$ openstack catalog list
+------------+----------------+------------------------------------------------------------------------------+
| Name | Type | Endpoints |
+------------+----------------+------------------------------------------------------------------------------+
| cinderv2 | volumev2 | regionOne |
| | | internal: http://172.24.1.50:8776/v2/42eecbfbaf684f909abfe5304434fc77 |
| | | regionOne |
| | | admin: http://172.24.1.50:8776/v2/42eecbfbaf684f909abfe5304434fc77 |
| | | regionOne |
| | | public: http://172.25.250.50:8776/v2/42eecbfbaf684f909abfe5304434fc77 |
| | | |
| octavia | load-balancer | regionOne |
| | | public: http://172.25.250.50:9876 |
| | | regionOne |
| | | admin: http://172.24.1.50:9876 |
| | | regionOne |
| | | internal: http://172.24.1.50:9876 |
| | | |
| cinderv3 | volumev3 | regionOne |
| | | public: http://172.25.250.50:8776/v3/42eecbfbaf684f909abfe5304434fc77 |
| | | regionOne |
| | | internal: http://172.24.1.50:8776/v3/42eecbfbaf684f909abfe5304434fc77 |
| | | regionOne |
| | | admin: http://172.24.1.50:8776/v3/42eecbfbaf684f909abfe5304434fc77 |
消息队列RabbitMQ
考试内容:创建和发动。
概念
- 绑定(binding key):过滤器的参数
- 交换(exchange):信息元数据,将应用产生的发布到消息路由队列。
- routing key:应用指定的消息元数据(关键字)。
常见的集中消息队列
Direct(默认) | 用户订阅到一个queue并关联一个binding key,服务端设置routing key和binding key与用户订阅的queue关联。(完全匹配) |
---|---|
Topic | 用户订阅的queue具备wildcards(广义性),服务端可以将数据发送到相应的queue。(部分匹配) |
Fanout | 消息广播所有的订阅的queue,无论routing key和binding key是否匹配。不存在routing key。(广播) |
Header | 使用消息的header特性来对queue进行binding。(消息头部信息) |
如何管理和创建RabbitMQ
登陆controller0,执行RabbitMQ命令
[root@controller0 ~] docker exec -it rabbitmq-bundle-docker-0 bash
rabbitmqctl help
()[root@controller0 /] rabbitmqctl list_users
Listing users
guest [administrator]
考点:
跟踪RabbitMQ消息:内置功能,启动该功能,所有进入RabbitMQ的消息都会复制到amq.rabbitmq.tarce exchange中。方便用户对消息进行分析。指令 rabbitmqctl trace_on
书上P97练习,考试例子:创建一个rabbitmq用户ash,密码为redhat,该用户可创建、操作和查询RabbitMQ queues与exchanges。
分配administrator角色指定权限,开启trace_on。
[root@controller0 ~] docker exec -it rabbitmq-bundle-docker-0 bash ()[root@controller0 /] rabbitmqctl add_user ash redhat Creating user "ash" ()[root@controller0 /] rabbitmqctl set_permissions ash ".*" ".*" ".*" Setting permissions for user "ash" in vhost "/" ()[root@controller0 /] rabbitmqctl set_user_tags ash administrator Setting tags for user "ash" to [administrator] ()[root@controller0 /] rabbitmqctl list_users Listing users ash [] guest [administrator] ()[root@controller0 /] rabbitmqctl trace_on Starting tracing for vhost "/"
使用VNC访问VM流程图
关闭OpenStack
- 关闭overcloud上所有的实例
openstack server list --all-projects
openstack server stop ID
- 关闭undercloud计算节点
poweroff
- 关闭undercloud控制节点
poweroff
- 关闭controller0上存储控制参数
ceph osd set noout
ceph osd set norecover
ceph osd set norebalance
ceph osd set nobackfill
ceph osd set nodown
ceph osd set pause
- 关闭ceph0
- 存储节点
poweroff
- 关闭controller0集群
pcs cluster stop –all
poweroff
- 关闭director
poweroff
考试例子:查询redis服务密码
ssh controller0 docker exec -it redis-bundle-docker-0 bash cat /etc/redis.conf |grep -i pass