kolla超融合OpenStack

发布时间 2023-05-03 12:59:09作者: A57

1.环境准备

主机名 IP 内存 CPU
hci-cloud01 10.10.10.60,20.20.20.60,30.30.30.60 32G 12核
hci-cloud02 10.10.10.61,20.20.20.61,30.30.30.61 32G 12核
hci-cloud03 10.10.10.62,20.20.20.62,30.30.30.62 32G 12核
每台机器磁盘最少需要3块裸盘做ceph

1.1 环境需求

  • 系统为centos8,采用离线部署,所需要的软件、镜像、文档均在以下链接
    • 至少每台机器需要三块裸盘做ceph集群
链接:https://pan.baidu.com/s/1IDy5WLq1JHhVoMXPU55jjg?pwd=6666 
提取码:6666
  • 全程架构为openstack+ceph后端存储,三台机群使用超融合部署openstack+ceph,Windows测试环境请至少准备64G内存

1.2 关闭防火墙与selinux

  • 所有机器
sed -i "s/SELINUX=enforcing/SELINUX=edisabled/g" /etc/selinux/config; systemctl stop firewalld; systemctl disable firewalld; setenforce 0

2.初始化

  • 将如下软件导入到hci-cloud01节点中
ops-director-kolla-new.tar.gz

tar-tool.rpm.xz
  • 安装tar命令
xz -d tar-tool.rpm.xz

rpm -ivh tar-tool.rpm
  • 解压脚本程序包
tar xvf ops-director-kolla-new.tar.gz
  • 免密配置
ssh-keygen
一直回车即可

for i in 0 1 2;do ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.10.10.6$i;done
yes
主机密码
  • 初始化环境
cd ops-director-kolla



vi director-inventory.ini
1 [all:vars]
3 ansible_ssh_pass=000000

[deployment]
6 10.10.10.60

[control]
9 10.10.10.60 hostname=hci-cloud01
10 10.10.10.61 hostname=hci-cloud02
11 10.10.10.62 hostname=hci-cloud03

[compute]
14 10.10.10.60
15 10.10.10.61
16 10.10.10.62



vi start.sh
# 管理实例网卡
7 Openstack_Tenant_NIC="eth2"



# 执行脚本
source start.sh
  • 窗口重新建立连接
exit

再连接即可(ssh root@10.10.10.60/1/2)

3.Ceph部署

  • 均在hci-cloud01节点执行

3.1 配置ceph集群环境

cd ops-director-kolla/ceph-director/

vim inventory/ceph-cluster.ini
2 [all:vars]
4 ansible_ssh_pass=000000
7 [mons]
8 10.10.10.60
9 10.10.10.61
10 10.10.10.62
11 
12 [osds]
13 10.10.10.60
14 10.10.10.61
15 10.10.10.62


PS: 如果存在不同的磁盘名称情况下,指定磁盘操作如下,如果都一样无需在这操作
12 [osds]
13 10.10.10.60 devices="['/dev/sdb','/dev/sdc','/dev/sdd']"
14 10.10.10.61 devices="['/dev/sde','/dev/sdf','/dev/sdg']"
15 10.10.10.62 devices="['/dev/sdj','/dev/sdk','/dev/sdl']"

3.2 配置ceph全局环境

cd ops-director-kolla/ceph-director/

vim group_vars/all.yml
158 yum_repo_ip: 10.10.10.60
329 monitor_interface: eth0
370 public_network: "10.10.10.0/24"
371 cluster_network: "20.20.20.0/24"
408 radosgw_interface: eth0
577 ceph_docker_registry: 10.10.10.60:8086
848 insecure_registries: "10.10.10.60:8086"

3.3 osd配置

  • 配置ceph集群环境部分如果配置osd指定磁盘设备,这里就不用配置,忽略即可!
vim group_vars/osds.yml
36 devices:
37   - /dev/sdb
38   - /dev/sdc
39   - /dev/sdd
40   - /dev/sde

PS: 注意根据自身环境写入,必须是裸盘,而且每台集群磁盘名称一致(磁盘查看命令: lsblk)
  • 如果有需要对ceph进行限制配置,就如下,不需要忽略!
  • mds配置

vim ceph-director/group_vars/mdss.yml
# 根据实际服务器配置内存和CPU,可使用默认配置不修改
ceph_mds_docker_memory_limit: "4096m"
ceph_mds_docker_cpu_limit: 4
  • mgr配置

vim ceph-director/group_vars/mgrs.yml
# 根据实际服务器配置内存和CPU,可使用默认配置不修改
ceph_mgr_docker_memory_limit: "4096m"
ceph_mgr_docker_cpu_limit: 1
  • mon配置

vim ceph-director/group_vars/mons.yml
# 根据实际服务器配置内存和CPU,可使用默认配置不修改
ceph_mon_docker_memory_limit: "4096m"
ceph_mon_docker_cpu_limit: 1
  • rgws配置

vim ceph-director/group_vars/rgws.yml
# 根据实际服务器配置内存和CPU,可使用默认配置不修改
ceph_rgw_docker_memory_limit: "4096m"
ceph_rgw_docker_cpu_limit: 8

3.4 ceph集群执行

cd /root/ops-director-kolla/ceph-director

source ansible-playbook-command-docker.sh

3.5 ceph验证

# 查看容器ID
docker ps | grep ceph

docker exec -it ceph任意容器id bash

#关闭mon监测
ceph config set mon auth_allow_insecure_global_id_reclaim false

查看ceph监控服务
ceph mgr services

访问:
https://10.10.10.60:8443/
用户名:admin
密码:p@ssw0rd

# 查看
cat /root/ops-director-kolla/ceph-director/group_vars/all.yml | grep dashboard_admin_password


http://10.10.10.60:9283/

4.部署openstack

  • 环境配置
cd /root/ops-director-kolla

vim inventory/multinode
5 ansible_ssh_pass=000000



vim /etc/kolla/globals.yml
5 kolla_internal_vip_address: "10.10.10.248"
6 docker_registry: "10.10.10.60:8086"
8 network_interface: "eth0"
9 neutron_external_interface: "eth2"
# 如果是服务器那么就使用kvm
35 nova_compute_virt_type: "qemu"



=====================================================================

# 如果不对接ceph就要加这个参数
vim /etc/kolla/globals.yml
cinder_volume_group: "cinder-volumes"

pvcreate /dev/sdd

vgcreate cinder-volumes /dev/sdd

之后会自动使用sdd磁盘作为cinder的卷
  • 注意根据PG
    • 确定pg_num 取值是强制性的,因为不能自动计算。下面是几个常用的值:
    • 少于 5 个 OSD 时可把 pg_num 设置为 128;
    • OSD 数量在 5到 10 个时,可把 pg_num 设置为 512;
    • OSD 数量在 10 到 50 个时,可把 pg_num 设置为 4096;
    • OSD数量大于50时,你得理解权衡方法、以及如何自己计算pg_num 取值;
      自己计算 pg_num 取值时可借助 pgcalc 工具 https://ceph.com/pgcalc/ 随着 OSD 数量的增加,正确的 pg_num 取值变得更加重要,因为它显著地影响着集群的行为、以及出错时的数据持久性(即灾难性事件导致数据丢失的概率)

  • 执行OpenStack脚本
source ops-install.sh
  • 访问测试
http://10.10.10.248/

用户名:root
密码:cat /etc/kolla/passwords.yml | grep keystone_admin_password

5.ceph后端存储

5.1 glance后端存储

  • 上传镜像
source /etc/kolla/admin-openrc.sh

openstack image create cirros04 --disk-format qcow2 --file cirros-0.4.0-x86_64-disk.img

docker exec -it ceph-mon-hci-cloud01 bash

# 得到一个id,可以查看镜像id是否能匹配上
rbd ls images

5.2 cinder后端存储

  • 创建卷类型
 openstack volume type create Ceph --public --description "Cephcinder"
  • 创建卷
openstack volume create cinder01 --size 50 --type Ceph
  • 查看验证
docker exec -it ceph-mon-hci-cloud01 bash

# 得到一个id,可以查看镜像id是否能匹配上
rbd ls volumes

5.3 swiift部署与后端存储

  • swift部署

source /etc/kolla/admin-openrc.sh

openstack service create --name=swift --description="Swift Service" object-store

openstack user create --domain default --password swift swift

openstack role add --project service --user swift admin

openstack endpoint create swift internal "http://10.10.10.60:8080/swift/v1" --region RegionOne

openstack endpoint create swift public "http://10.10.10.60:8080/swift/v1" --region RegionOne

openstack endpoint create swift admin "http://10.10.10.60:8080/swift/v1" --region RegionOne



vim /etc/ceph/ceph.conf
26 [client]
27 rbd_default_features = 1
28 rgw_dynamic_resharding = False
29 rgw_enable_ops_log = False
30 rgw_enable_usage_log = True
31 rgw_keystone_accepted_admin_roles = admin
32 rgw_keystone_accepted_roles = admin,_member_,member
33 rgw_keystone_admin_domain = Default
# 密码在/etc/kolla/passwords.yml
34 rgw_keystone_admin_password = Kn2e75mEKQDMChTfPnOkFKBtU9bkIu3YzMkeZTPb
35 rgw_keystone_admin_project = admin
36 rgw_keystone_admin_user = admin
37 rgw_keystone_api_version = 3
38 rgw_keystone_token_cache_size = 500
39 rgw_keystone_revocation_interval = 0
40 # openstack_vip
41 rgw_keystone_url = http://10.10.10.248:5000
42 rgw_s3_auth_use_keystone = True
43 rgw_user_quota_bucket_sync_interval = 60
44 rgw_user_quota_sync_interval = 3600



docker restart <rgw_container>
  • 创建swift对象并查看验证
openstack container create ceph_swfit --public

docker exec -it ceph-mon-hci-cloud01 bash

radosgw-admin bucket list

5.4 实例后端存储

  • 自行创建网络(flat、vxlan)、路由器、实例类型、云主机

# 查看网络名称
 cat /etc/kolla/neutron-server/ml2_conf.ini
  • 放行安全组ICMP、TCP、UDP

  • 查看实例后端

docker exec -it ceph-mon-hci-cloud01 bash

rbd ls vms