云计算lab-ceph cluster配置(ubuntu环境)
ceph cluster配置(ubuntu环境)
Lab tasks:
使用华为云创建三个虚拟服务器,每台机器两块网口。
ecs-1, ecs-2, ecs-3的网卡配置分别如图所示:
使用弹性公网IP远程ssh三台服务,只允许密钥认证且允许root账户远程ssh
生成密钥对。
root@ecs-2:~# ssh-keygen
把公钥发送到其他服务器
(此处用的ip是弹性公网ip,后续会使用局域网私有ip)
(替换成192.168.0.109,192.168.0.66,192.168.0.248,也可以执行)
发送到ecs-1
root@ecs-2:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@114.116.249.114
同理,发送到ecs-3
root@ecs-2:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@123.249.95.74
验证:
主机ecs-1和ecs-3同理,使其都能够通过ssh密钥登录
ecs-3:
ssh-keygen
登录主机ecs-1:root@ecs-3:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@114.116.249.114
登录主机ecs-2:root@ecs-3:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@123.249.64.7
ecs-1:
ssh-keygen
登录主机ecs-2:root@ecs-1:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@123.249.64.7
登录主机ecs-3:root@ecs-1:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@123.249.95.74
添加hostname和解析:
命名
root@ecs-1:~# hostnamectl set-hostname node01
root@ecs-2:/# hostnamectl set-hostname node02
root@ecs-3:~# hostnamectl set-hostname node03
(后文对三个节点使用192.168.0.0/24子网内ip执行)
添加解析
root@ecs-1:~# vi /etc/hosts
192.168.0.109 node01
192.168.0.66 node02
192.168.0.248 node 03
Copy到其他节点
root@ecs-1:~# scp /etc/hosts node02:/etc/
root@ecs-1:~# scp /etc/hosts node03:/etc/
测试:
配置完成。
对每个虚拟服务器完成集群所需基本配置
修改apt源,添加局域网代理:
root@ecs-1:~# vi /etc/apt/sources.list
修改为:
deb http://mirror.lzu.edu.cn/ubuntu focal main restricted
deb http://mirror.lzu.edu.cn/ubuntu focal-updates main restricted
deb http://mirror.lzu.edu.cn/ubuntu focal universe
deb http://mirror.lzu.edu.cn/ubuntu focal-updates universe
deb http://mirror.lzu.edu.cn/ubuntu focal multiverse
deb http://mirror.lzu.edu.cn/ubuntu focal-updates multiverse
deb http://mirror.lzu.edu.cn/ubuntu focal-backports main restricted universe multiverse
deb http://mirror.lzu.edu.cn/ubuntu focal-security main restricted
deb http://mirror.lzu.edu.cn/ubuntu focal-security universe
deb http://mirror.lzu.edu.cn/ubuntu focal-security multiverse
root@ecs-1:~# apt update
root@ecs-1:~# apt upgrade
其他节点执行相同操作
添加apt代理:
root@ecs-1:/# vim /etc/environment
添加
Acquire::http::proxy "http://noc:8912027@cg.lzu.edu.cn:8080/";
Acquire::ftp::proxy "http://noc:8912027@cg.lzu.edu.cn:8080/";
Acquire::https::proxy "http://noc:8912027@cg.lzu.edu.cn:8080/";
其他主机同理
配置时间:
root@ecs-1:/# timedatectl set-timezone Asia/Shanghai
root@ecs-1:~# apt install chrony
确保时间同步,配置网络可达的时间服务器地址或域名
root@ecs-1:/# vi /etc/chrony/chrony.conf
pool cg.lzu.edu.cn iburst
重启服务
root@ecs-1:/# systemctl restart chrony
设置自启动
root@ecs-1:/# systemctl enable chrony
查看同步状态
root@ecs-1:/# chronyc sources
写入系统
root@ecs-1:/# hwclock -w
其他两台主机ecs-2(node02)和ecs-3(node03)也做相同操作进行时间同步。
优化-关闭不需要的服务
显示正在运行的服务:root@node01:~# systemctl -t service
显示所有服务:root@node01:~# systemctl list-unit-files -t service
停止不需要的服务,并禁止其开机自启动:
root@node01:~# systemctl stop ufw
root@node01:~# systemctl disable ufw
Synchronizing state of ufw.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable ufw
Removed /etc/systemd/system/multi-user.target.wants/ufw.service.
root@node01:~# systemctl disable cloud-config
Removed /etc/systemd/system/cloud-init.target.wants/cloud-config.service.
root@node01:~# systemctl disable cloud-init-local
Removed /etc/systemd/system/cloud-init.target.wants/cloud-init-local.service.
root@node01:~# systemctl disable cloud-init
Removed /etc/systemd/system/cloud-init.target.wants/cloud-init.service.
root@node01:~# systemctl disable fwupd-refresh
其他节点也做相同操作。
系统基本优化
检查ulimit大小:
root@node01:~# ulimit -n
65535
root@node01:~# ulimit -Hn
65535
root@node01:~# cat /proc/sys/fs/file-max
9223372036854775807
root@node01:~# cat /proc/sys/fs/nr_open
1048576
根据file-max>=nr_open>=ulimit hard >= ulimit soft,先设置file-max和nr_open:
root@node01:~# vi /etc/sysctl.conf
fs.file-max = 10000000000
fs.nr_open = 1000000000
检查:root@node01:~# sysctl -p
修改ulimit配置:root@node01:~# vi /etc/security/limits.conf
* soft nproc 102400
* hard nproc 104800
* soft nofile 102400
* hard nofile 104800
root soft nproc 102400
root hard nproc 104800
root soft nofile 102400
root hard nofile 104800
重启系统生效配置:root@node01:~# reboot
查看是否配置成功:
将修改后的文件copy到其他两个节点。
拷贝到node02:
root@node01:~# scp /etc/sysctl.conf node02:/etc/
root@node01:~# scp /etc/security/limits.conf node02:/etc/security/
拷贝到node03:
root@node01:~# scp /etc/sysctl.conf node03:/etc/
root@node01:~# scp /etc/security/limits.conf node03:/etc/security/
连接到其他主机,应用配置:
root@node02:~# sysctl -p
root@node02:~# reboot
node03同理,在此不再列出。
以上,集群基本配置完成。
Ceph集群部署安装
添加ceph源证书:
root@node01:~# wget -q -O- 'https://download.ceph.com/keys/release.asc'| sudo apt-key add –
添加apt源:
root@node01:~# echo deb https://download.ceph.com/debian-pacific/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
查看apt文件:
root@node01:~# cat /etc/apt/sources.list.d/ceph.list
deb https://download.ceph.com/debian-pacific/ jammy main
更新:
root@node01:~# apt update
安装ceph:
root@node01:~# apt install -y ceph
node02和node03做以上相同操作。
检查节点版本,可见各节点版本一致:
完成。
部署MON:
为集群生成唯一ID:
root@node01:~# uuidgen
5fb84a89-fd66-4e14-b8c0-aa28403b52f7
配置文件:root@node01:~# vi /etc/ceph/ceph.conf
[global]
fsid = 5fb84a89-fd66-4e14-b8c0-aa28403b52f7 #集群唯一标识符
mon initial members = node01 # mon 名称
mon host = 192.168.0.109 #mon IP 地址
public network = 192.168.0.0/24 #服务网络
cluster network = 192.168.1.0/24 #集群网络
auth cluster required = cephx # 默认启用认证
auth service required = cephx
auth client required = cephx
osd journal size = 1024
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 32
osd pool default pgp num = 32
osd crush chooseleaf type = 1
为集群生成mon密钥环:
root@node01:~# sudo ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
生成管理密钥环:
root@node01:~# sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
生成bootstrap-osd密钥环:
root@node01:~# sudo ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r'
将生成的密钥环导入:
root@node01:~# sudo ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
root@node01:~# sudo ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
修改权限:
root@node01:~# sudo chown ceph:ceph /tmp/ceph.mon.keyring
生成监视图:
root@node01:~# monmaptool --create --add node01 192.168.0.109 --fsid 5fb84a89-fd66-4e14-b8c0-aa28403b52f7 /tmp/monmap
monmaptool: monmap file /tmp/monmap
创建节点mon目录:
root@node01:~# sudo -u ceph mkdir /var/lib/ceph/mon/ceph-node01
初始化:
root@node01:~# sudo -u ceph ceph-mon --mkfs -i node01 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
查看初始化生成的文件:
root@node01:~# ls /var/lib/ceph/mon/ceph-node01/
启动服务并配置自启:
root@node01:~# systemctl restart ceph-mon@node01
root@node01:~# systemctl enable ceph-mon@node01
查看服务状态:
root@node01:~# systemctl status ceph-mon@node01
安装空的done文件(防止重新安装):
root@node01:~# touch /var/lib/ceph/mon/ceph-node01/done
验证mon运行情况:
root@node01:~# ceph -s
有告警,后续会进行相关配置解决。
将/etc/ceph从node01拷贝到其他两个节点:
到node02:root@node01:~# scp -r /etc/ceph/ node02:/etc/
到node03:root@node01:~# scp -r /etc/ceph/ node03:/etc/
接下来,添加其他节点为mon:
使用命令ssh node02登录新监视器主机
创建默认目录:
root@node02:~# sudo -u ceph mkdir /var/lib/ceph/mon/ceph-node02
获取监视器密钥环:
root@node02:~# ceph auth get mon. -o /tmp/ceph.mon.keyring
获取监视器运行图:
root@node02:~# ceph mon getmap -o /tmp/ceph.mon.map
修改ceph.mon.keyring 属主和属组为 ceph:
root@node02:~# chown ceph.ceph /tmp/ceph.mon.keyring
初始化mon:
root@node02:~# sudo -u ceph ceph-mon --mkfs -i node02 --monmap /tmp/ceph.mon.map --keyring /tmp/ceph.mon.keyring
创建空文件done(防止被重新安装):
root@node02:~# sudo touch /var/lib/ceph/mon/ceph-node02/done
启动服务并配置自启,node02自动加入集群:
root@node02:~# systemctl start ceph-mon@node02
root@node02:~# systemctl enable ceph-mon@node02
查看状态:
root@node02:~# systemctl status ceph-mon@node02
查看集群验证:ceph -s
Node03做相同操作加入集群,在此省略详细步骤。
登录到node01,消除告警:
root@node01:~# ceph mon enable-msgr2
root@node01:~# ceph config set mon auth_allow_insecure_global_id_reclaim false
可以看到health: HEALTH_OK,说明集群处于健康状态,完成。
OSD添加:
将/var/lib/ceph/bootstrap-osd/ceph.keyring 密钥环从初始 mon 节点拷贝到其他节点node02和node03的相同目录下:
root@node01:~# scp /var/lib/ceph/bootstrap-osd/ceph.keyring node02:/var/lib/ceph/bootstrap-osd/
root@node01:~# scp /var/lib/ceph/bootstrap-osd/ceph.keyring node03:/var/lib/ceph/bootstrap-osd/
查看节点硬盘情况:
root@node01:~# sudo ceph-volume lvm create --data /dev/sdb
查看:
root@node01:~# sudo ceph-volume lvm list
查看osd:
root@node01:~# ceph osd tree
查看该osd的服务状态:
设置服务开机自启:
root@node01:~# systemctl enable ceph-osd@0
为其他节点添加osd:
登录到node02主机,执行:
root@node02:~# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sdb
root@node02:~# sudo ceph-volume lvm create --data /dev/sdb
root@node02:~# systemctl status ceph-osd@1
root@node02:~# systemctl enable ceph-osd@1
其中查看状态命令结果如下:
登录节点node03,也执行相同操作。
root@node03:~# ls /dev/sd*
root@node03:~# sudo ceph-volume lvm create --data /dev/sdb
root@node03:~# systemctl status ceph-osd@2
root@node03:~# systemctl enable ceph-osd@2
osd添加完成。
在node01节点添加mgr:
先登录到node01节点。
创建密钥环:
root@node01:~# ceph auth get-or-create mgr.node01 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
[mgr.node01]
key = AQAa/zdkyqgbDRAAvJ6St8Wws0KtyttuXeNA8Q==
创建mgr节点目录:
root@node01:~# sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-node01/
将mgr的节点密钥输出到上条命令创建的mgr节点目录下:
root@node01:~# ceph auth get mgr.node01 -o /var/lib/ceph/mgr/ceph-node01/keyring
启动mode01节点的mgr服务:
root@node01:~# systemctl start ceph-mgr@node01
root@node01:~# systemctl status ceph-mgr@node01
root@node01:~# systemctl enable ceph-mgr@node01
查看ceph:root@node01:~# ceph -s
配置Dashboard:
安装dashboard,并在mgr所在节点node01启用dashboard:
root@node01:~# apt install ceph-mgr-dashboard
root@node01:~# ceph mgr module enable dashboard
自创建安装证书:
root@node01:~# ceph dashboard create-self-signed-cert
root@node01:~# openssl req -new -nodes -x509 \
> -subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650 \
> -keyout dashboard.key -out dashboard.crt -extensions v3_ca
更新SSL certificate和key:
root@node01:~# ceph dashboard set-ssl-certificate -i dashboard.crt
root@node01:~# ceph dashboard set-ssl-certificate-key -i dashboard.key
配置ip和端口:
root@node01:~# ceph config set mgr mgr/dashboard/server_addr 192.168.0.109
root@node01:~# ceph config set mgr mgr/dashboard/server_port 8080
root@node01:~# ceph config set mgr mgr/dashboard/ssl_server_port 8443
为web管理用户创建密码文件,将密码写入:
root@node01:~# vi /root/cephpasswd
配置给管理用户:
root@node01:~# ceph dashboard ac-user-create admin -i /root/cephpasswd administrator
查看配置:root@node01:~# ceph config dump
重启mgr服务:root@node01:~# systemctl restart ceph-mgr@node01
查看访问dashboard地址:root@node01:~# ceph mgr services
DashBoard的很多功能后续根据功能配置。
块存储:
在osd中创建rbd池:
root@node01:~# ceph osd lspools
1 .mgr
root@node01:~# ceph osd pool create rbd 32
pool 'rbd' created
root@node01:~# ceph osd lspools
1 .mgr
2 rbd
初始化创建的rbd pool:root@node01:~# rbd pool init rbd
创建一个10G的盘disk01:
root@node01:~# rbd create disk01 --size 10G --image-feature layering
查看:root@node01:~# rbd ls -l
映射到本地:root@node01:~# rbd map disk01
查看映射情况:root@node01:~# rbd showmapped
格式化该硬盘:root@node01:~# sudo mkfs.xfs /dev/rbd0
挂载硬盘:root@node01:~# sudo mount /dev/rbd0 /mnt
查看挂载情况:root@node01:~# df -kh
断开:root@node01:~# umount /mnt
root@node01:~# rbd device unmap disk01
root@node01:~# rbd remove disk01
Removing image: 100% complete...done.
查看每个OSD上的PG数:root@node01:~# ceph osd df
查看PG状态:root@node01:~# ceph pg stat
PG的关系(笔记):
集群 PG=(OSD*100)/最大副本数 (所有存储池加起来不要超过)
存储池 PG=(PG=(OSD*100)/最大副本数)/存储池数
PoolPGCount=((TargetPGsPerOSD)∗(OSDNumber)∗(DataPercent) )/PoolSize
PG数是2的次方整数 PG=PGP 默认 mon_max_pg_per_osd = 250,即每个 OSD
文件存储:
添加MDS服务:
创建目录:
root@node01:~# sudo -u ceph mkdir -p /var/lib/ceph/mds/ceph-node01
生成 mds.node01 密钥:
root@node01:~# ceph auth get-or-create mds.node01 osd "allow rwx" mds "allow" mon "allow profile mds"
导出mds密钥:
root@node01:~# ceph auth get mds.node01 -o /var/lib/ceph/mds/ceph-node01/keyring
修改配置文件ceph.conf:
root@node01:~# vi /etc/ceph/ceph.conf
添加:
启动mds服务:
root@node01:~# systemctl start ceph-mds@node01
查看状态:
root@node01:~# systemctl status ceph-mds@node01
设置启动:
root@node01:~# systemctl enable ceph-mds@node01
root@node01:~# ceph -s查看ceph状态:
创建存储池,文件存储服务data数据和meta数据各一个存储池:
创建存储池并检查状态:
root@node01:~# ceph osd pool create cephfs_data 32
pool 'cephfs_data' created
root@node01:~# ceph osd pool create cephfs_metadata 32
pool 'cephfs_metadata' created
root@node01:~# ceph fs new cephfs cephfs_metadata cephfs_data
new fs with metadata pool 4 and data pool 3
root@node01:~# ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
root@node01:~# ceph mds stat
cephfs:1 {0=node01=up:active}
对客户端节点进行配置以使用服务(以node02为例,node03做相同操作)。
添加ceph源:
root@node02:~# wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add
root@node02:~# echo deb https://download.ceph.com/debian-pacific/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
root@node02:~# apt -y install ceph-fuse ceph-common
创建目录
root@node02:~# mkdir /etc/ceph
将 ceph.conf 拷贝至客户端目录下:
root@node02:~# scp node01:/etc/ceph/ceph.conf /etc/ceph/
root@node02:~# ceph-fuse -m node01:6789 -r / /mnt
查看挂载情况:root@node02:~# df -kh
解除挂载:root@node02:~# umount /mnt
用ceph集群验证文件存储:
创建用户:
root@node01:~# ceph fs authorize cephfs client.fs / rw
root@node01:~# ceph auth get-or-create client.fs -o /etc/ceph/client.fs.keyring
在客户端使用client.fs用户:
root@node02:~# scp node01:/etc/ceph/client.fs.keyring /etc/ceph/keyring
root@node02:~# mount -t ceph node01:6789:/ /mnt -o name=fs
服务器使用 NFS 协议对外提供 cephfs:
root@node01:~# apt -y install nfs-ganesha-ceph
修改配置文件:
NFS_CORE_PARAM {
# disable NLM
Enable_NLM = false;
# disable RQUOTA (not suported on CephFS)
Enable_RQUOTA = false;
# NFS protocol Protocols = 4;
}
EXPORT_DEFAULTS {
# default access mode
Access_Type = RW;
}
EXPORT {
# uniq ID
Export_Id = 101;
# mount path of CephFS
Path = "/";
FSAL {
name =CEPH;
}
# setting for root Squash
Squash="No_root_squash";
# NFSv4 Pseudo path
Pseudo="/vfs_ceph";
# allowed security options
SecType = "sys";
}
LOG {
# default log level
Default_Log_Level = WARN;
}
重启:root@node01:~# systemctl restart nfs-ganesha
客户端(以node02为例,node03做相同操作):
安装nfs-common并挂载:
root@node02:~# apt install nfs-common
root@node02:~# mount -t nfs4 node01:/vfs_ceph /mnt
检查挂载情况:root@node02:~# df -kh
完成。
检查ceph状态:
对象存储:
安装radosgw:
root@node01:~# apt -y install radosgw
修改配置文件:
root@node01:~# vi /etc/ceph/ceph.conf
添加:
[client.rgw.node01]
host = node01
rgw frontends = "beast port=10001"
rgw dns name = node01
root@node01:~# sudo -u ceph mkdir -p /var/lib/ceph/radosgw/ceph-rgw.node01
root@node01:~# ceph auth get-or-create client.rgw.node01 osd 'allow rwx' mon 'allow rw' -o /var/lib/ceph/radosgw/ceph-rgw.node01/keyring
root@node01:~# systemctl enable --now ceph-radosgw@rgw.node01
root@node01:~# ceph osd lspools
创建.rgw.root、default.rgw.log、default.rgw.control、default.rgw.meta 、default.rgw.buckets.index等存储池:
root@node01:~# ceph osd pool create .rgw.root 16
root@node01:~# ceph osd pool create default.rgw.control 16 16
root@node01:~# ceph osd pool create default.rgw.meta 16 16
root@node01:~# ceph osd pool create default.rgw.log 16 16
root@node01:~# ceph osd pool create default.rgw.buckets.index 16 16
root@node01:~# ceph osd pool create default.rgw.buckets.data 16 16
root@node01:~# ceph osd pool create default.rgw.buckets.non-ec 16 16
查看存储池:
解决PG数超过OSD250告警问题方法(由于create时已经设定了pg数等未出现问题,在此对方法进行测试和留档):
修改配置文件:
root@node01:~# vim /etc/ceph/ceph.conf
重启mon服务:
root@node01:~# systemctl restart ceph-mon@node01
用命令修改pg和pgp的方法:
查看存储池:
root@node01:~# ceph osd lspools
检查配置文件中的默认数值并修改:
root@node01:~# ceph osd pool get default.rgw.log pg_num
root@node01:~# ceph osd pool get default.rgw.log pgp_num
root@node01:~# ceph osd pool set default.rgw.log pg_num 16
root@node01:~# ceph osd pool set default.rgw.log pgp_num 16
在node01节点上创建账户:
root@node01:~# radosgw-admin user create --uid="admin" --display-name="admin user" –system
查询账户信息:
root@node01:~# radosgw-admin user info --uid=admin
查看账户列表:
root@node01:~# radosgw-admin user list
可见创建完成。
账户的key信息为:
"access_key": "4AU53GZ0399I3UNRZCYY",
"secret_key": "c20VJzgDJn4pqCs4NfodLlhCp21GtXPcNIW5rzGV"
将两个密钥分别写入rgw_access_key和rgw_secret_key中:
root@node01:~# vi rgw_access_key
root@node01:~# root@node01:~# vi rgw_secret_key
将radosgw集成到dashboard:
root@node01:~# ceph dashboard set-rgw-api-ssl-verify false
root@node01:~# ceph dashboard set-rgw-api-access-key -i rgw_access_key
root@node01:~# ceph dashboard set-rgw-api-secret-key -i rgw_secret_key
配置安全组规则(入/出):
进行验证:
查看ceph状态:
可见,Mon,OSD,MGR, MDS和radosgw服务均配置完成,dashboard服务在前文配置完成。
root@node01:~# apt -y install python3-boto3
创建python语言下的test文件:
import sys
import boto3
from botocore.config import Config
# user's access-key and secret-key you added on [2] section
session = boto3.session.Session(
aws_access_key_id = '4AU53GZ0399I3UNRZCYY',
aws_secret_access_key = 'c20VJzgDJn4pqCs4NfodLlhCp21GtXPcNIW5rzGV'
)
# Object Gateway URL
s3client = session.client(
's3',
endpoint_url = 'http://114.116.249.114:10001',
config = Config()
)
# create [my-new-bucket]
bucket = s3client.create_bucket(Bucket = 'my-new-bucket')
# list Buckets
print(s3client.list_buckets())
# remove [my-new-bucket]
s3client.delete_bucket(Bucket = 'my-new-bucket')
运行程序:root@node01:~# python3 s3_test.py
或者用OBS Browser登录访问
可见配置完成
iSCSI配置:
修改配置文件:root@node01:~# vi /etc/ceph/ceph.conf
[osd]
osd heartbeat grace = 20
osd heartbeat interval = 5
root@node01:~# root@node01:~# ceph tell osd.* config set osd_heartbeat_grace 20
root@node01:~# ceph tell osd.* config set osd_heartbeat_interval 5
root@node01:~# apt update
安装包:
root@node01:~# apt install ceph-iscsi
root@node01:~# vi /etc/ceph/iscsi-gateway.cfg
[config]
cluster_name = ceph
gateway_keyring = ceph.client.admin.keyring
api_secure = false
api_user = admin
api_password = admin
api_port = 5001
trusted_ip_list = 192.168.0.109,192.168.0.66,192.168.0.248
root@node01:~# systemctl enable tcmu-runner
root@node01:~# systemctl enable rbd-target-gw
root@node01:~# systemctl enable rbd-target-api
root@node01:~# systemctl restart tcmu-runner
root@node01:~# systemctl restart rbd-target-gw
root@node01:~# systemctl restart rbd-target-api
添加dashboard:
root@node01:~# vi iscsigw1
http://admin:admin@node01:5001/
root@node01:~# ceph dashboard set-iscsi-api-ssl-verification false
root@node01:~# ceph dashboard iscsi-gateway-add -i iscsigw1
root@node01:~# ceph dashboard iscsi-gateway-list
添加node02 iscsi网关,操作同node1。
创建完成后:
配置 iSCSI Target 将一个 rbd 镜像输出为 LUN0
在网关节点开启一个命令行接口:
root@node01:~# gwcli
/> ls
创建target:
/> cd /iscsi-targets
/iscsi-targets> create iqn.2022-01.com.test:test1
这里忘记改时间了,target的命名格式为iqn.yyyy-mm.:自定义名称 (自定义名称内不能有下划线),本次创建的target名称是iqn.2022-01.com.test:test1
/iscsi-targets> cd iqn.2022-01.com.test:test1/gateways
/iscsi-target...est1/gateways> create node01 192.168.0.109
/iscsi-target...est1/gateways> create node02 192.168.0.66
添加镜像:
/iscsi-target...est1/gateways> cd /disks
/disks> create pool=rbd image=disk_1 size=10G
添加名称为的客户端
/disks> cd /iscsi-targets/iqn.2022-01.com.test:test1/hosts
/iscsi-target...t:test1/hosts> create iqn.2023-04.com.test:xstr
给客户端添加硬盘:
/iscsi-target...com.test:xstr> disk add rbd/disk_1
用户,username=username2022 password=password2022:
/iscsi-target...com.test:xstr> auth username=username2022 password=password2022
完成。
配置客户端:
root@node03:~# apt -y install open-iscsi multipath-tools
root@node03:~# vi /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2023-04.com.test:xstr
修改配置文件:root@node03:~# vi /etc/iscsi/iscsid.conf
root@node03:~# systemctl restart iscsid open-iscsi
root@node03:~# vi /etc/multipath.conf
devices {
device {
vendor "LIO-ORG"
hardware_handler "1 alua"
path_grouping_policy "failover"
path_selector "queue-length 0"
failback 60
path_checker tur
prio alua
prio_args exclusive_pref_bit
fast_io_fail_tmo 25
no_path_retry queue
}
}
root@node03:~# systemctl restart multipathd
发现target:
root@node03:~# iscsiadm -m discovery -t st -p 192.168.0.109
查看状态:
root@node03:~# iscsiadm -m node -o show
登录:
root@node03:~# iscsiadm -m node --login
登录成功。
查看会话:root@node03:~# iscsiadm -m session -o show
查看multipath:
root@node03:~# multipath -ll
登出,注销会话:
root@node03:~# iscsiadm -m node --logout
iSCSI测试完成。
以上,实验完成。