ops-install-service-openstack_keystone
Openstack – yoga 版本部署
https://www.ngui.cc/el/819132.html?action=onClick
架构组件
全局组件
- keystone: 身份认证服务,提供认证、管理全局权限、认证和授权的组件
- Ceilometer: 计量、监控服务,监控整个集群架构状态的租金啊
- Horizon: 控制面板服务,可以使用 openstack 架构中的所有功能
核心组件
- Nova(计算服务)
- Glance(镜像服务)
- Neutron(网络服务)
- Swift(对象存储服务)
- Cinder(块存储服务) 由nova将资源收集整合,统一提供给虚拟机 如果要添加其他一些功能,关联,调用一些功能组件的API或者把功能对应的API暴露出来后,供给其它组件去对接,调用(openstack的灵活性)
辅助、其他组件
-
Ironic:裸金属(裸机)提供基本的硬件资源
-
Trove:数据库,管理数据库的服务(关系,非关系);存储openstack实例数据,各组件之间调用,使用情况;日志文件
-
Heat、Sahara:对数据进行分析,编排,处理,精细化管理
-
计算服务
-
存储服务
-
网络服务
-
权限服务
-
镜像服务
-
接口服务
-
控制平台服务
-
云管理服务
-
密码
- db
- root pH822Q4@ht%3v6^3
- glance h45A7i95Tnn8FaXV6xCA
- placement ibbX2f5S7Jvs5469p3En
- nova ANq8ycYi89y23am9J3uX
- cinder G2S2e8ie7co9L666m2Kh
- dash kSh7L92ua39VmrKNK2n2
- keystone 6yX9nE2zC9y8AUo5GR5K
- neutron ERq3W6mjCA4r8J3778oC
- keystone
- admin 622oFdb9ncj56fA3
- rabbitmq
- openstack or68W8dPkV4Bp5Crx7Ca
- openstack-user
- admin yDri3!259R3RW$M8
- common_user g34*p3vWN!b2u2Z8
- glance 5s2&rV83KfZ29qG7
- placement 5M52SRZc8k4Bv&32
- nova MG%5ff253v44hfS3
- neutron $63@3KcV88PK36v4
- cinder 2v%BJQ53gPhG842V
- demo D3P#2&Er7869ou6P
- rabbit 64SvH4D7$4e5xR5M
- other
- metadat_secret AS6sgjFE66W4327j27r2
- db
环境要求
额外网卡通过虚拟网卡实现,模拟私有子网
-
核心组件
- controller – 2C/8GB/100GB/2Nic
- compute – 4C/8GB/100GB/2Nic
-
可选组件
- block storage – 1C/4GB/100GB(数据盘独立)/1Nic
- object storage – 1C/4GB/100GB(数据盘独立)/1Nic
运行服务
-
controller
- 认证服务 – keystone(port:)
- 镜像服务 – glance(port:)
- 时间同步服务 – chrony
(port:) - 数据库服务 – mariadb(port:)
- 前端展示服务 – dashboard(port:)
- 消息队列服务 – memcached(port:)
- 计算服务 – nova-api nova-conductor nova-novncproxy nova-scheduler
-
compute *
-
block storage
- 文件共享服务
-
object storage
网络规划
- controller 10.0.0.11
- compute 10.0.0.21
- block-storage 10.0.0.31
- object-storage 10.0.0.41
服务部署
在 Ubuntu 20.04 上部署 yoga 版本,使用 root 用户进行部署
基本配置
-
安装 net-tools
1
apt install -y net-tools
-
配置虚拟网卡
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19# 增加虚拟网卡
cat >> /lib/systemd/system/rc-local.service << EOF
[Install]
WantedBy=multi-user.target
EOF
# 重载 systemctl
systemctl daemon-reload
# 配置虚拟网卡,
cat >> /etc/rc.local << EOF
#!/bin/bash
ifconfig ens160:1 10.0.0.11 netmask 255.255.255.0 up
EOF
# 修改文件权限
chmod +x /etc/rc.local
# 启动服务
systemctl enable --now rc-local.service -
修改hosts
1
2
3
4
5
6cat >> /etc/hosts << EOF
# controller
10.0.0.11 controller
# compute
10.0.0.21 compute
EOF -
添加源
1
add-apt-repository cloud-archive:yoga
-
安装客户端
1
apt install -y python3-openstackclient
controller 服务部署
第三方服务部署
-
安装 chrony 服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18# 安装
apt install -y chrony
# 使用阿里云 ntp 服务
cat >> /etc/chrony/chrony.conf << EOF
server ntp.aliyun.com iburst
allow 10.0.0.0/24
EOF
# 其他服务节点
# 安装 chrony
# 使用 controller 为ntp server
# cat >> /etc/chrony/chrony.conf << EOF
# server controller iburst
# EOF
# 重启服务
systemctl restart chrony -
安装 mariadb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22# 安装
apt install -y mariadb-server python3-pymysql
# 配置
cat >> /etc/mysql/mariadb.conf.d/99-openstack.cnf <<EOF
[mysqld]
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
EOF
# 重启
systemctl restart mysql
# 设置 root<数据库> 用户密码
mysql_secure_installation
# 修改 root 密码(localhost)
mysql -u root -p1
2
3use mysql;
set password for 'root'@'localhost' = password('root_dbpass');
flush privileges; -
安装 rabbitmq
1
2
3
4
5
6
7
8# 安装
apt install -y rabbitmq-server
# 添加 openstack
rabbitmqctl add_user openstack
# 赋予权限
rabbitmqctl set_permissions openstack ".*" ".*" ".*" -
安装 memcached
1
2
3
4
5
6
7
8
9
10# 安装
apt install -y memcached python3-memcache
# 配置
cat >> /etc/memcached.conf <<EOF
-l 10.0.0.11
EOF
# 重启
systemctl restart memcached -
安装 etcd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18# 安装
apt install -y etcd
# 配置
cat >> /etc/default/etcd <<EOF
ETCD_NAME="controller"
ETCD_DATA_DIR="/var/lib/etcd"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER="controller=http://10.0.0.11:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.0.11:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://10.0.0.11:2379"
EOF
# 重启
systemctl enable --now etcd
安装 keystone 服务
-
数据库管理
1
2# mysql 创建库及配置 keystone 数据库用户权限
mysql -u root -p1
2create database keystone;
grant all on keystone.* to 'keystone'@'%' identified by 'keystone_dbpass'; -
安装 keystone
1
2
3
4
5# 安装
apt install -y keystone
# 配置
vim /etc/keystone/keystone.conf1
2
3
4
5[database]
connection = mysql+pymysql://keystone:keystone_dbpass@controller/keystone
...
[receipt]
provider = fernet1
2
3
4
5
6
7
8
9
10
11
12
13
14# 初始化数据
su -s /bin/bash -c "keystone-manage db_sync" keystone
# 初始化 key 仓库
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
# 启动服务,注意替换 ADMIN_PASS
keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://controller:5000/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne -
修改 apache
1
2
3
4
5
6cat >> /etc/apache2/apache2.conf <<EOF
ServerName controller
EOF
# 重启
systemctl restart apache2
配置 keystone
-
创建环境变量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34# 创建目录
mkdir -p /opt/data/openstack/
# 设置环境变量 admin
cat >> /opt/data/openstack/admin_openrc <<EOF
unset OS_AUTH_URL
unset OS_PASSWORD
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF
# 设置环境变量 common
cat >> /opt/data/openstack/common_openrc <<EOF
unset OS_AUTH_URL
unset OS_PASSWORD
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_USERNAME=myuser
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF
# 赋予执行权限
chmod +x /opt/data/openstack/admin_openrc /opt/data/openstack/common_openrc -
创建 project 和 用户
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20# 引用环境变量
source /opt/data/openstack/admin_openrc
# 创建 admin project
openstack project create --domain default \
--description "Service Project" service
# 创建非 admin project
openstack project create --domain default \
--description "Common Project" common_project
# 创建普通用户
openstack user create --domain default \
--password-prompt common_user
# 创建普通角色
openstack role create common_role
# 关联用户角色
openstack role add --project common_project --user common_user common_role -
验证部署
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15# 引用环境变量
source /opt/data/openstack/admin_openrc
# 创建 admin issue
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name admin --os-username admin token issue
# 创建 common issue
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name common_project --os-username common_user token issue
# 查看
openstack token issue
推荐文章
-
2023-08-24
-
2023-08-23
Glance是OpenStack的镜像服务,负责用户虚拟机镜像的发现,注册和获取。
-
2023-08-23
Placement服务用来跟踪资源的使用情况。
-
2023-08-23