部署ceph集群(一)

作者: oldboy 分类: Openstack 发布时间: 2023-01-31 23:30

一:环境要求

服务器系统:centos7.9_x86_64
ceph版本: luminous

二:环境规划

节点类型主机IP主机名系统盘数据盘1 数据盘2
admin节点 192.168.201.130ceph-admin sda
mon节点 192.168.201.131ceph-mon1sda
mon节点 192.168.201.132ceph-mon2sda
mon节点 192.168.201.133ceph-mon3sda
mgr节点192.168.201.134ceph-mgr1sda
mgr节点192.168.201.135ceph-mgr2sda
store节点192.168.201.136ceph-store1sda sdbsdc
store节点192.168.201.137ceph-store2sda sdbsdc
store节点192.168.201.138ceph-store3sda sdbsdc
client客户端192.168.201.140ceph-clientsda可后期准备

三:环境准备

1、系统优化

yum install -y wget vim bash-completion lrzsz net-tools nfs-utils yum-utils rdate ntpdate
PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"
echo 'PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"' >>/etc/profile
echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >>/etc/bashrc
echo -e "ClientAliveInterval 30 \nClientAliveCountMax 86400" >>/etc/ssh/sshd_config
#sed -i '/#Port 22/a Port 52113' /etc/ssh/sshd_config
#rdate -s time.nist.gov
ntpdate 61.160.213.184
clock -w
echo "0 */1 * * * /usr/sbin/ntpdate 61.160.213.184 &> /dev/null"  >> /var/spool/cron/root
#echo "0 */1 * * * /usr/bin/rdate -s time.nist.gov &> /dev/null" >> /var/spool/cron/root
mkdir /etc/yum.repos.d/bak
\mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak  
wget -O /etc/yum.repos.d/CentOS-Base.repo   http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo   http://mirrors.aliyun.com/repo/epel-7.repo
sed -ri 's@(.*aliyuncs)@#\1@g' /etc/yum.repos.d/CentOS-Base.repo
yum clean all
yum makecache 
#yum update -y --exclude=kernel* --exclude=centos-release* --skip-broken
echo 'LANG="en_US.UTF-8"' >/etc/locale.conf
. /etc/locale.conf
echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf
sysctl -p
sed -i '/UseDNS/a UseDNS no' /etc/ssh/sshd_config
systemctl restart  sshd
systemctl stop firewalld.service
systemctl disable firewalld.service
sed -ri 's#^(SELINUX=).*$#\1disabled#g' /etc/selinux/config
setenforce 0
systemctl stop NetworkManager
systemctl disable NetworkManager

2、时间同步在系统优化里已经设置

3、所有节点修改主机名并相互解析

#对应设置
hostnamectl set-hostname ceph-admin
hostnamectl set-hostname ceph-mon1
hostnamectl set-hostname ceph-mon2
hostnamectl set-hostname ceph-mon3
hostnamectl set-hostname ceph-mgr1
hostnamectl set-hostname ceph-mgr2
hostnamectl set-hostname ceph-store1
hostnamectl set-hostname ceph-store2
hostnamectl set-hostname ceph-store3
cat >>/etc/hosts<<EOF
192.168.201.130 ceph-admin
192.168.201.131 ceph-mon1
192.168.201.132 ceph-mon2
192.168.201.133 ceph-mon3
192.168.201.134 ceph-mgr1
192.168.201.135 ceph-mgr2
192.168.201.136 ceph-store1
192.168.201.137 ceph-store2
192.168.201.138 ceph-store3
EOF

4、所有的节点创建普通用户cephu并设置密码,授权sudo权限

useradd cephu && echo qweqwe | passwd --stdin cephu
cat >>/etc/sudoers<<EOF
cephu ALL=(root) NOPASSWD:ALL
EOF

5、admin节点普通用户cephu下创建密钥并分发到所有节点

su - cephu
#3步回车
ssh-keygen
for i in `grep ceph /etc/hosts|awk '{print $(NF)}'`;do ssh-copy-id $i;done

说明:获取集群里所有的主机名

grep ceph /etc/hosts|awk '{print $(NF)}'

6、CentOS系统远程主机时默认使用root帐户和22端口,要把用户名的默认值修改成cephu(admin节点root帐户下操作)

cat >/home/cephu/.ssh/config<<EOF
Host ceph-admin
Hostname ceph-admin
User cephu

Host ceph-mon1
Hostname ceph-mon1
User cephu

Host ceph-mon2
Hostname ceph-mon2
User cephu

Host ceph-mon3
Hostname ceph-mon3
User cephu

Host ceph-mgr1
Hostname ceph-mgr1
User cephu

Host ceph-mgr2
Hostname ceph-mgr2
User cephu

Host ceph-store1
Hostname ceph-store1
User cephu

Host ceph-store2
Hostname ceph-store2
User cephu

Host ceph-store3
Hostname ceph-store3
User cephu
EOF

说明:

Host ceph-admin 主机对应的是hosts文件里的
Hostname ceph-admin 主机名对应是设置的系统名
User cephu 对应系统里创建的普通用户
Port 52113 有需要也可以端口
远程主机 ssh ceph-mon1 其实就是ssh -p 52113 cephu@ceph-mon1

7、添加ceph-deploy源并安装(admin节点的root帐户下操作)

cat > /etc/yum.repos.d/ceph.repo<<EOF
[ceph-noarch]
name=ceph noarch packages
baseurl=https://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
EOF
yum install -y ceph-deploy

四、部署ceph集群

1、创建ceph-deploy的工作目录,安装python依赖环境(admin节点的cephu用户下操作)

su - cephu
mkdir my-cluster
wget https://files.pythonhosted.org/packages/5f/ad/1fde06877a8d7d5c9b60eff7de2d452f639916ae1d48f0b8f97bf97e570a/distribute-0.7.3.zip
sudo yum install -y unzip
unzip distribute-0.7.3.zip
cd distribute-0.7.3/
sudo python setup.py install

2、创建主monitor(监视器)

cd ../my-cluster/
sudo cp /root/.ssh/config /home/cephu/.ssh/
chmod 600 /home/cephu/.ssh/config
#此处没有指定cluster网络(--cluster-network)
ceph-deploy new --public-network 192.168.201.0/24 ceph-mon1

创建成功,目录下会生成3个文件

3、设置集群节点ceph安装源(在store和mon和mgr节点root帐户下操作)

su -
cat >/etc/yum.repos.d/ceph.repo<<'EOF'
[ceph]
name=ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

[ceph-noarch]
name=ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

[ceph-source]
name=ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
EOF
#有阿里的epel源话就不需要安装官网的epel源了
#yum install -y epel-release

切换到cephu普通用户安装的是L(luminous)版的ceph(在store和mon和mgr节点操作)

su - cephu
sudo yum install -y ceph ceph-radosgw
ceph  --version

4、admin节点上初始化monitor节点(cephu用户下操作)

#su - cephu
cd /home/cephu/my-cluster/
#初始化monitor节点
ceph-deploy mon create-initial

目录下就会生成很多文件

把配置文件和admin的密钥推送到ceph集群各节点(mgr节点和store节点和mon节点),以免每次执行ceph命令都要明确MON的地址和ceph.client.admin.keyring

ceph-deploy admin ceph-mon1 ceph-mon2 ceph-mon3 ceph-mgr1 ceph-mgr2 ceph-store1 ceph-store2 ceph-store3 ceph-admin

集群节点就有这几个文件

5、配置manager节点,启动ceph-mgr进程(admin节点cephu用户下操作)

ceph-deploy mgr create ceph-mgr1

6、查看OSD节点上可用的磁盘信息并添加OSD存储盘(admin节点cephu用户下操作)

ceph-deploy disk list ceph-store1 ceph-store2 ceph-store3

添加(创建)OSD存储盘(后期增加存储盘也是使用此命令)

ceph-deploy osd create --data /dev/sdb ceph-store1
ceph-deploy osd create --data /dev/sdc ceph-store1

ceph-deploy osd create --data /dev/sdb ceph-store2
ceph-deploy osd create --data /dev/sdc ceph-store2

ceph-deploy osd create --data /dev/sdb ceph-store3
ceph-deploy osd create --data /dev/sdc ceph-store3

7、查看集群状态(第4步被推过密钥文件的节点都可以查看)

sudo ceph -s

一个mon节点+一个mgr节点+6个OSD存储盘(900G空间,使用了6G,还有894G)

8、在mgr1节点上部署dashboard(ceph-mgr1节点的cephu用户下操作)

su - cephu
#创建管理域密钥
sudo ceph auth get-or-create mgr.ceph-mgr1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
#开启manager管理域
sudo ceph-mgr -i ceph-mgr1

查看mgr节点状态(active,starting)

启用dashboard模块并绑定开启模块的主机IP地址

sudo ceph mgr module enable dashboard
sudo ceph config-key set mgr/dashboard/ceph-mgr1/server_addr 192.168.201.134

使用浏览器访问dashboard(IP地址:7000)

9、扩展monitor节点和manager节点(admin节点cephu普通用户操作)

从集群状态可以看出monitor节点和manager节点各有一个节点,这是不能实现高可用 的,当一台monitor节点宕机可能使用整个集群崩溃

ceph-deploy mon add ceph-mon2
ceph-deploy mon add ceph-mon3
ceph-deploy mgr create ceph-mgr2

查看集群状态

查看监视器及法定人数的相关状态:

sudo ceph quorum_status --format json-pretty

至此集群部署完成

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

一条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

标签云