# vip在proxy上[root@proxy ~]# ip a s eth0 | grep '88\.80'
inet 192.168.88.80/32 scope global eth0
[root@proxy2 ~]# ip a s eth0 | grep '88\.80' # 没有vip# 模拟proxy故障,将其关机[root@proxy ~]# shutdown -h now# 查看proxy2上有没有出现vip[root@proxy2 ~]# ip a s eth0 | grep '88\.80'
inet 192.168.88.80/32 scope global eth0 # 已经出现vip# 浏览器上继续访问http://www.lab.com,服务仍然可用# 重新启动proxy,vip将会切回[root@proxy ~]# ip a s eth0 | grep '88\.80'
inet 192.168.88.80/32 scope global eth0
[root@proxy2 ~]# ip a s eth0 | grep '88\.80' # vip消失
配置ceph
主机角色
主机名
IP地址
ceph节点1
node1
192.168.99.41/24
ceph节点2
node2
192.168.99.42/24
ceph节点3
node3
192.168.99.43/24
每台机器还要再添加2块20GB的硬盘
创建三台虚拟机,并配置防火墙、SELINUX、主机名、IP地址、yum
# 查看3台机器的硬盘[root@node1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 30G 0 disk
└─vda1 253:1 0 30G 0 part /
vdb 253:16 0 20G 0 disk
vdc 253:32 0 20G 0 disk
[root@node2 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 30G 0 disk
└─vda1 253:1 0 30G 0 part /
vdb 253:16 0 20G 0 disk
vdc 253:32 0 20G 0 disk
[root@node3 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 30G 0 disk
└─vda1 253:1 0 30G 0 part /
vdb 253:16 0 20G 0 disk
vdc 253:32 0 20G 0 disk
# ceph为我们提供了一个ceph-deploy工具,可以在某一节点上统一操作全部节点# 将Node1作为部署节点,将来的操作都在node1上进行。这样,需要node1能够免密操作其他主机[root@node1 ~]# ssh-keygen # 生成密钥对[root@node1 ~]# for i in {41..43}>do> ssh-copy-id 192.168.99.$i>done# 在所有的主机上配置名称解析。注意,解析的名字必须是该机器的主机名[root@node1 ~]# for i in {1..3}>do>echo -e "192.168.99.4$i\tnode$i">> /etc/hosts
>done[root@node1 ~]# cat /etc/hosts... ...
192.168.99.41 node1
192.168.99.42 node2
192.168.99.43 node3
[root@node2 ~]# for i in {1..3}; do echo -e "192.168.99.4$i\tnode$i" >> /etc/hosts; done[root@node3 ~]# for i in {1..3}; do echo -e "192.168.99.4$i\tnode$i" >> /etc/hosts; done
安装集群
# 在3个节点上安装软件包[root@node1 ~]# for i in node{1..3}>do>ssh$i yum install -y ceph-mon ceph-osd ceph-mds ceph-radosgw
>done# 配置pubserver为ntp服务器[root@pubserver ~]# yum install -y chrony[root@pubserver ~]# vim /etc/chrony.conf
allow 192.168.99.0/24 # 授权192.168.99.0/24可以时钟同步local stratum 10# 即使没有从一个源同步时钟,也为其他主机提供时间[root@pubserver ~]# systemctl restart chronyd# 配置node1-3成为pubserver的NTP客户端[root@node1 ~]# for i in node{1..3}>do>ssh$i yum install -y chrony
>done[root@node1 ~]# vim /etc/chrony.conf# 将所有的server注释加上以下内容
server 192.168.99.240 iburst
[root@node1 ~]# scp /etc/chrony.conf node2:/etc/[root@node1 ~]# scp /etc/chrony.conf node3:/etc/[root@node1 ~]# for i in node{1..3}>do>ssh$i systemctl restart chronyd
>done# 验证时间是否同步 node1前面有^*表示同步成功[root@node1 ~]# chronyc sources -v... ...
^* pubserver 1061740 -4385ns[-1241us] +/- 162us
# 在node1上安装ceph-deploy部署工具[root@node1 ~]# yum install -y ceph-deploy# 查看使用帮助[root@node1 ~]# ceph-deploy --help[root@node1 ~]# ceph-deploy mon --help # 查看mon子命令的帮助# 创建ceph-deploy工作目录[root@node1 ~]# mkdir ceph-cluster[root@node1 ~]# cd ceph-cluster# 创建一个新的集群。[root@node1 ceph-cluster]# ceph-deploy new node{1..3}[root@node1 ceph-cluster]# ls
ceph.conf ceph-deploy-ceph.log ceph.mon.keyring
[root@node1 ceph-cluster]# tree ..
├── ceph.conf # 集群配置文件
├── ceph-deploy-ceph.log # 日志文件
└── ceph.mon.keyring # 共享密钥# 开启分层快照功能。[root@node1 ceph-cluster]# vim ceph.conf # 尾部追加一行如下
rbd_default_features =1# 初始化monitor[root@node1 ceph-cluster]# ceph-deploy mon create-initial[root@node1 ceph-cluster]# systemctl status ceph-mon*
● ceph-mon@node1.service ....[root@node2 ~]# systemctl status ceph*
● ceph-mon@node2.service ... ...
[root@node3 ~]# systemctl status ceph*
● ceph-mon@node3.service ... ...
# 注意:这些服务在30分钟之内只能启动3次,超过报错。# 查看集群状态[root@node1 ceph-cluster]# ceph -s
health HEALTH_ERR # 因为还没有硬盘,所以状态是HEALTH_ERR# 创建OSD[root@node1 ceph-cluster]# ceph-deploy disk --help# 初始化各主机的硬盘。vmware应该是sdb和sdc[root@node1 ceph-cluster]# ceph-deploy disk zap node1:vdb node1:vdc [root@node1 ceph-cluster]# ceph-deploy disk zap node2:vdb node2:vdc [root@node1 ceph-cluster]# ceph-deploy disk zap node3:vdb node3:vdc # 创建存储空间。ceph会硬盘分为两个分区,一个分区大小为5GB,用于保存ceph的内部资源;另一个分区是剩余全部空间[root@node1 ceph-cluster]# ceph-deploy osd --help[root@node1 ceph-cluster]# ceph-deploy osd create node1:vd{b,c}[root@node1 ceph-cluster]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 30G 0 disk
└─vda1 253:1 0 30G 0 part /
vdb 253:16 0 20G 0 disk
├─vdb1 253:17 0 15G 0 part /var/lib/ceph/osd/ceph-0
└─vdb2 253:18 0 5G 0 part
vdc 253:32 0 20G 0 disk
├─vdc1 253:33 0 15G 0 part /var/lib/ceph/osd/ceph-1
└─vdc2 253:34 0 5G 0 part
# 将会出现2个osd进程,因为有两块硬盘用于ceph[root@node1 ceph-cluster]# systemctl status ceph-osd*# 继续初始化其他节点的OSD[root@node1 ceph-cluster]# ceph-deploy osd create node2:vd{b,c}[root@node1 ceph-cluster]# ceph-deploy osd create node3:vd{b,c}# 查看集群状态[root@node1 ceph-cluster]# ceph -s
health HEALTH_OK # 状态是HEALTH_OK表示一切正常
配置ceph fs
安装并启用mds
# 在node1配置MDS[root@node1 ~]# cd ceph-cluster/[root@node1 ceph-cluster]# ceph-deploy mds create node3[root@node3 ~]# systemctl status ceph-mds*# 1. 新建一个名为data1的存储池,目的是存储数据,有100个PG[root@node1 ceph-cluster]# ceph osd pool create data1 100# 2. 新建一个名为metadata1的存储池,目的是存储元数据[root@node1 ceph-cluster]# ceph osd pool create metadata1 100# 3. 创建名为myfs1的cephfs,数据保存到data1中,元数据保存到metadata1中[root@node1 ceph-cluster]# ceph fs new myfs1 metadata1 data1# 查看存储池[root@node1 ceph-cluster]# ceph osd lspools 0 rbd,1 data1,2 metadata1,
[root@node1 ceph-cluster]# ceph df
GLOBAL:
SIZE AVAIL RAW USED %RAW USED
92093M 91574M 519M 0.56
POOLS:
NAME ID USED %USED MAX AVAIL OBJECTS
rbd 0 86469k 0.28 30488M 2606
data1 100 30488M 0
metadata1 220680 30488M 20# 查看创建文件系统[root@node1 ceph-cluster]# ceph fs ls
name: myfs1, metadata pool: metadata1, data pools: [data1 ]