23

02 Ceph集群规划及部署mimic-db2start的博客

 3 years ago
source link: https://blog.51cto.com/14758677/2507528
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

参考连接:<https://docs.ceph.com/docs/master/

2.1 集群规划

​ 最少三台Centos7系统虚拟机用于部署Ceph集群。硬件配置:2C4G,另外每台机器最少挂载三块硬盘(每块盘5G).以下为本次环境规划:

HOST IP Service Mark
cephmanager01 public network:192.168.10.51--ens224 <br>cluster network:172.168.10.51--ens192 mon, mgr,mds 8c8g<br>系统盘:200G
cephmanager02 public network:192.168.10.72--ens224 <br/>cluster network:172.168.10.72--ens192 mon, mgr,mds 8c8g<br/>系统盘:200G
cephmanager03 public network:192.168.10.75--ens224 <br/>cluster network:172.168.10.75--ens192 mon, mgr,mds 8c8g<br/>系统盘:200G
cephnode001 public network:192.168.10.76--ens224 <br/>cluster network:172.168.10.76--ens192 osd 4c8g<br>系统盘:200G<br>数据盘:50G/块x4
cephnode002 public network:192.168.10.82--ens224 <br/>cluster network:172.168.10.82--ens192 osd 4c8g<br/>系统盘:200G<br/>数据盘:50G/块x4
cephnode003 public network:192.168.10.101--ens224 <br/>cluster network:172.168.10.101--ens192 osd 4c8g<br/>系统盘:200G<br/>数据盘:50G/块x4
组件 版本 建议配置 备注
CentOS CentOS Linux release 7.4.1708 管理节点CPU要好
Ceph 13.2.10 mimic 数据节点磁盘空间大

2.2 环境准备

[在manager节点和node节点执行]

2.2.1基础环境准备

2.2.1.1 防火墙设置

关闭防火墙并设置开机关闭

# systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld

或者配置防火墙端口(根据情况添加对应端口)

# firewall-cmd --zone=public --add-port=6789/tcp --permanent
# firewall-cmd --zone=public --add-port=6800-7100/tcp --permanent
# firewall-cmd --reload
# firewall-cmd --zone=public --list-all

2.2.1.2 关闭selinux

永久关闭(需要重启)

# sed -i 's/enforcing/disabled/' /etc/selinux/config
# setenforce 0
# getenforce

2.2.1.3 关闭NetworkManager

# systemctl disable NetworkManager && systemctl stop NetworkManager && systemctl status NetworkManager

2.2.1.4 设置主机名并添加主机名与IP对应关系

设置主机名[在对应节点上执行]

# hostnamectl --static set-hostname cephmanager01
# hostnamectl --static set-hostname cephmanager02
# hostnamectl --static set-hostname cephmanager03
# hostnamectl --static set-hostname cephnode001
# hostnamectl --static set-hostname cephnode002
# hostnamectl --static set-hostname cephnode003

修改hosts

# cat >> /etc/hosts << EOF
192.168.10.51   cephmanager01
192.168.10.72   cephmanager02
192.168.10.75   cephmanager03
192.168.10.76   cephnode001
192.168.10.82   cephnode002
192.168.10.101  cephnode003
EOF

2.2.1.5 设置时间同步

1)设置时区并同步互联网时间

# yum install -y ntpdate  chrony
# timedatectl set-timezone Asia/Shanghai
# ntpdate time1.aliyun.com

2)配置所有服务器的时间和时间服务器同步或者同某一台服务器同步[本例同步cephmanager01节点时间]

编辑 /etc/chrony.conf 文件,添加(互联网上的时间服务器可以删除):

server 192.168.10.51 iburst

重启服务并配置开机启动

# systemctl restart chronyd.service && systemctl enable chronyd.service && systemctl status chronyd.service

验证:是否与cephmanager01同步

# chronyc sources

2.2.1.6 设置文件限制

# echo "ulimit -SHn 102400" >> /etc/rc.local
# cat >> /etc/security/limits.conf << EOF
* soft nofile 65535
* hard nofile 65535
EOF

2.2.1.7 内核参数优化

# cat >> /etc/sysctl.conf << EOF
kernel.pid_max = 4194303 
vm.swappiness = 0
EOF
# sysctl -p

2.2.1.8 read_ahead

通过数据预读并且记载到随机访问内存方式提高磁盘读操作

# echo "8192" > /sys/block/sda/queue/read_ahead_kb

2.2.1.9 I/O Scheduler

SSD要用noop,SATA/SAS使用deadline

# echo "deadline" >/sys/block/sd[x]/queue/scheduler
# echo "noop" >/sys/block/sd[x]/queue/scheduler

2.2.1.10 安装可能用到的工具软件

# yum install wget vim lrzsz -y

2.2.2 用户环境准备

2.2.2.1 创建用户

# useradd -d /home/cephuser -m cephuser
# passwd cephuser
Changing password for user cephuser.
New password: ceph_pass
Retype new password: ceph_pass

修改visudo文件,使cephuser用户在sudo列表中;

# 在92行” root    ALL=(ALL)       ALL”下新增一行:” cephuser    ALL=(ALL)       ALL” 
# visudo
cephuser    ALL=(ALL)       ALL

2.2.2.2 用户赋权

设置cephuser用户具备无密码sudo(root)权限;切换到cephuser用户下操作

# su - cephuser
[cephuser@cephmanager01 ~]$ echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
[sudo] password for cephuser: ceph_pass
cephuser ALL = (root) NOPASSWD:AL
[cephuser@cephmanager01 ~]$ sudo chmod 0440 /etc/sudoers.d/cephuser

2.2.2.3 ssh免密登陆

1)生成秘钥

ceph-deploy不支持密码输入,需要在管理控制节点生成ssh秘钥,并将公钥分发到各ceph节点;

在用户cephuser下生成秘钥,不能使用sudo或root用户;默认在用户目录下生成~/.ssh目录,含生成的秘钥对;“Enter passphrase”时,回车,口令为空;

备注:3个manager节点均设置为ceph管理控制节点,应该使3个manager节点均能ssh免密登陆到其他所有manager节点与node节点

# 分别在cephmanager01,cephmanager02,cephmanager03执行
[root@cephmanager01 ~]# su - cephuser
Last login: Sun Jun 28 14:49:09 CST 2020 on pts/4
[cephuser@cephmanager01 ~]$ ssh-keygen -t rsa
02 Ceph集群规划及部署mimic

2)分发密钥

确认各控制manger与node节点已生成相关用户cephuser;分发成功后,在~/.ssh/下生成known_hosts文件,记录相关登陆信息;

# 需要分别在cephmanager01、cephmanager02、cephmanager03上分发到所有的manager和node节点
[cephuser@cephmanager01 ~]$ ssh-copy-id cephuser@cephmanager02
02 Ceph集群规划及部署mimic

2.2.3 配置yum源

配置内网yum源服务器,或者配置对应的国内源,这里配置ceph源和epel源

# cat > /etc/yum.repos.d/ceph.repo << EOF
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/x86_64/
gpgcheck=0
priority=1

[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/
gpgcheck=0
priority=1

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS
gpgcheck=0
priority=1
EOF
# wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
# yum clean all
# yum makecache
# 查看yum源
# yum repolist

2.3 安装ceph-deploy

[在规划的全部manager节点安装ceph-deploy工具,本例以cephmanager01为例]

推配置文件、变更维护,添加硬盘等操作都需要用到ceph-deploy,并确认ceph-deploy版本是否为2.0.1

[root@cephmanager01 ~]# yum install ceph-deploy python-setuptools -y
# 确认版本
[root@cephmanager01 ~]# ceph-deploy --version

2.4 集群部署

2.4.1 创建集群

[在规划的全部manager节点执行,特殊说明处例外,本例以cephmanager01为例]

在cephuser账户下操作,切忌使用sudo操作;在manager节点上创建一个目录用于存放集群相关配置文件;

[root@cephmanager01 ~]# su - cephuser
[cephuser@cephmanager01 ~]$ mkdir cephcluster
# 后续ceph-deploy相关操作全部在所创建的目录执行
[cephuser@cephmanager01 ~]$ cd cephcluster/
# 将规划中的MON(monitor)节点纳入集群,即创建集群,
# [该操作任意一个cephmanager执行,以cephmanage01为例]
[cephuser@cephmanager01 cephcluster]$ ceph-deploy new cephmanager01 cephmanager02 cephmanager03
[cephuser@cephmanager01 cephcluster]$ ls
ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyrin

2.4.2 修改集群配置文件(optional)

生成集群后在集群目录下生成3个文件,其中ceph.conf即是配置文件;

默认可不修改,为使服务按规划启动,可做适当修改;

以下红色字体部分是在默认生成的conf文件上新增的配置

[该操作任意一个cephmanager执行,以cephmanage01为例]

[cephde@controller01 cephcluster]$ cat ceph.conf 
[global]
fsid = 6a71324c-6949-42bc-92ca-325c9d45ae06
mon_initial_members = cephmanager01, cephmanager02, cephmanager03
mon_host = 192.168.10.51,192.168.10.72,192.168.10.75
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

# public network:前端mon网络,client访问网络;确保public network与mon_host在相同网段,否则初始化时可能会有错误;
# cluster network:后端osd心跳,数据/流复制恢复等网络
public network = 192.168.10.0/24
cluster network = 172.168.10.0/24

# 默认的副本数为3,根据实际情况变更
osd pool default size = 3

# 默认保护机制不允许删除pool,根据情况设置
mon_allow_pool_delete = true

2.4.3 安装ceph

[在全部manager和node节点执行]

# 建议使用该命令安装在每个节点安装
[root@cephmanager01 ~]# yum -y install epel-release 
[root@cephmanager01 ~]# yum -y install ceph
# 不建议使用,该命令会在对应节点安装,但是源会自动更换为国外官方源,网速会很慢
[root@cephmanager01 ~]# ceph-deploy install --release mimic cephnode01 cephnode02 cephnode03
# 查看版本
[root@controller01 ~]# ceph -v

2.4.4 初始化ceph_mon

[该操作在任意一个cephmanager执行,以cephmanage01为例]

[root@cephmanager01 ~]# su - cephuser
Last login: Mon Jun 29 02:17:20 CST 2020 on pts/0
[cephuser@cephmanager01 ~]$ cd cephcluster/
[cephuser@cephmanager01 cephcluster]$ ceph-deploy mon create-initial
# 初始化完成后,在集群目录下新增多个秘钥文件
[cephuser@cephmanager01 cephcluster]$ ls -l
02 Ceph集群规划及部署mimic
# 查看状态
[cephuser@cephmanager01 cephcluster]$ sudo systemctl status ceph-mon@cephmanager01

2.4.5 分发ceph.conf与秘钥

# 分发ceph配置文件与秘钥到其他控制manager节点与node节点;
# 注意分发节点本身也需要包含在内,默认没有秘钥文件,需要分发;
# 如果被分发节点已经配置文件(统一变更配置文件场景),可以使用如下命令:ceph-deploy --overwrite-conf admin xxx
# 分发的配置文件与秘钥到各节点/etc/ceph/目录
[cephuser@cephmanager01 cephcluster]$ ceph-deploy admin cephmanager01 cephmanager02 cephmanager03 cephnode001 cephnode002 cephnode003

完后可以使用ceph -s命令,tail -f ceph-deploy-ceph.log查看安装日志

将cephcluster目录下面的文件拷贝到其余的manager节点:

[cephuser@cephmanager01 cephcluster]$ pwd
/home/cephuser/cephcluster
[cephuser@cephmanager01 cephcluster]$ scp ceph.conf ceph-deploy-ceph.log ceph.mon.keyring cephuser@cephmanager03:~/cephcluster/
[cephuser@cephmanager01 cephcluster]$ scp ceph.bootstrap-* cephuser@cephmanager02:~/cephcluster/

2.4.6 配置ceph_mgr,用于管理集群

注意:L版之后才需要部署

[在任意manager节点执行,以cephmanager01为例]

[cephuser@cephmanager01 cephcluster]$ ceph-deploy mgr create cephmanager01:cephmanager01_mgr cephmanager02:cephmanager02_mgr cephmanager03:cephmanager03_mgr
# 查看状态
[cephuser@cephmanager01 cephcluster]$ systemctl status ceph-mgr@cephmanager01_mgr
[cephuser@cephmanager01 cephcluster]$ sudo ss -tunlp |grep mgr
02 Ceph集群规划及部署mimic

2.4.7 查看集群状态信息

[manager和node节点均可执行]

# 查看monitor状态
[cephuser@cephmanager01 ~]$ sudo ceph mon stat
# 查看ceph状态
[cephuser@cephmanager01 ~]$ sudo ceph -s
02 Ceph集群规划及部署mimic

2.5 OSD

2.5.1 创建OSD

osd位于node节点,可查看node节点磁盘状况,以cephnode001节点为例;

或在manager节点采用命令:ceph-deploy disk list cephnode001 cephnode001 … cephnode00N;

[root@cephnode001 ~]# lsblk

实际创建osd时,可通过manager节点使用ceph-deploy创建[任意一manager节点执行,以cephmanager01为例];

# 参数"--data"指定数据盘,参数"--journal"指定journal日志盘,日志盘可以是logical volume(vg/lv)或GPT patition,是option操作;
# 另有命令(L版本):ceph-deploy osd prepare {NODE}:{DISK}[:{/PATH/TO/JOURNAL}]; ceph-deploy osd activate {NODE}:{DISK}[:{/PATH/TO/JOURNAL}],其中[:{/PATH/TO/JOURNAL}]是option操作,可创建具有journal日志的osd守护进程(节点)
[cephuser@cephmanager01 cephcluster]$ ceph-deploy osd create cephnode001 --data /dev/sdb
[cephuser@cephmanager01 cephcluster]$ ceph-deploy osd create cephnode001 --data /dev/sdc
[cephuser@cephmanager01 cephcluster]$ ceph-deploy osd create cephnode001 --data /dev/sdd
[cephuser@cephmanager01 cephcluster]$ ceph-deploy osd create cephnode001 --data /dev/sde

本例中有3个node节点(osd),每个node节点运行4个osd进程(在6800~7300端口范围内,每进程监听1个本地端口)[以cephnode001为例];

[root@cephnode001 ~]# lsblk
[root@cephnode001 ~]# ps -aux |grep osd
# osd进程端口号;
[root@cephnode001 ~]# netstat -tunlp | grep osd
# ceph-osd进程,根据启动顺序,每个osd进程有特定的序号
[root@cephnode001 ~]# systemctl status ceph-osd@0
02 Ceph集群规划及部署mimic

如果节点磁盘有数据,可通过命令初始化(谨慎):ceph-deploy disk zap {NODE} {DISK},这里{DISK}可以是物理盘符,也可是分区

2.5.2 查看OSD状态

在manager节点查看,以cephmanager01为例

[cephuser@cephmanager01 cephcluster]$ ceph-deploy osd list cephnode001
[cephuser@cephmanager01 cephcluster]$ sudo ceph osd stat
[cephuser@cephmanager01 cephcluster]$ sudo ceph osd tree
[cephuser@cephmanager01 cephcluster]$ sudo ceph df

在node节点查看,以cephnode001为例

[root@cephnode001 ~]# lsblk
[root@cephnode001 ~]# ps -aux |grep osd
[root@cephnode001 ~]# netstat -tunlp | grep osd
[root@cephnode001 ~]# systemctl status ceph-osd@0

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK