云计算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测试完成。

以上,实验完成。

posted @ 2023-04-15 11:03  X_stream  阅读(195)  评论(0编辑  收藏  举报