#!/bin/bash
#安装前准备,高可用最多需要九台机器,最少三台机器。其中admin节点,mon节点,osd节点可以存在一台机器上。
 #在每天机器上将计算机名修改
 hostnamectl set-hostname admin
 hostnamectl set-hostname mon01
 hostnamectl set-hostname mon02
 hostnamectl set-hostname mon03
 hostnamectl set-hostname mgr01
 hostnamectl set-hostname mgr02
 hostnamectl set-hostname store01
 hostnamectl set-hostname store02
 hostnamectl set-hostname store03#在每台机器上执行,将host文件添加好,方便使用
 cat > /etc/hosts <<EOF
 192.168.0.101 admin
 192.168.0.102 mon01
 192.168.0.103 mon02
 192.168.0.104 mon03
 192.168.0.105 mgr01
 192.168.0.106 mgr02
 192.168.0.107 store01
 192.168.0.108 store02
 192.168.0.109 store03
 EOF#复制root用户的公钥,在admin节点使用ssh-keygen,再使用ssh-copy-id将公钥发送到其他所有主机上,保证root免密码访问
 ssh-keygen
 ssh-copy-id root@192.168.0.102
 ...
 ssh-copy-id root@192.168.0.109#在所有主机上创建cephadm账户,并配置sudo权限
 useradd -m -s /bin/bash cephadm
 echo cephadm:123456 | chpasswd
 echo "cephadm ALL = (root) NOPASSWD:ALL" > /etc/sudoers.d/cephadm
 chmod 0440 /etc/sudoers.d/cephadm#在admin节点 su - cephadm,并创建key,再发送到所有主机上
 su - cephadm
 ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
 ssh-copy-id cephadm@192.168.0.102
 ...
 ssh-copy-id cephadm@192.168.0.109#再所有节点主机配置本地yum源,如果没有本地yum源,需要寻找ceph源,以便安装ceph相关的软件,依赖等
 #在所有节点上进行yum install -y ceph ,在admin节点额外进行yum install -y ceph-deploy
 yum install -y ceph #所有节点
 yum install -y ceph-deploy #admin节点
 #在admin节点创建ceph文件存储目录
 mkdir -pv /usr/local/ceph
 cd /usr/local/ceph ##########################################################################################
 ########################################集群初始化########################################
 ########################################################################################## #mon01节点集群初始化,在admin节点执行
 ceph-deploy new --public-network 192.168.0.0/24 --cluster-network 192.168.0.0/24 mon01
 #初始化完成后,可在/usr/local/ceph目录下可以看到配置文件
 cat /usr/local/ceph#接下来为mon节点安装ceph-mon软件
 ceph-deploy install --no-adjust-repos --nogpgcheck --mon mon01
 #或者也可以直接在mon01节点进行,其他节点相同
 yum install -y cdph-mon
 #经测试,在每个机器上执行yum install -y ceph之后,这些软件都会有#初始化mon节点生成配置信息
 ceph-deploy --overwrite-conf mon create-initial
 #如果是单个机器部署,可直接发送至所有机器
 ceph-deploy --overwrite-conf config push mon01 mon02 mon03
 #初始化完成后,当前目录会生成更多文件,包括密钥文件,查看mon01节点的/etc/ceph/ceph.conf也能看到
 #此时查看ceph -s是无法使用的,因为没有管理权限,将mon01节点生成的配置推送到admin节点,或者拷贝,admin节点才会具有管理ceph集群的权限
 ceph-deploy admin admin
 #有权限之后,使用ceph -s 会发现cluster出现警告,使用如下命令去除,不去除也可以
 ceph config set mon autj_allow_insecure_global_id_reclaim false
 #此时mon节点已完成##########################################################################################
 ################################mgr节点部署###############################################
 ###########################################################################################在admin节点为mgr01安装软件
 ceph-deploy install --mgr mgr01
 #配置mgr节点启动mgr进程
 ceph-deploy mgr create mgr01
 #此时ceph -s 已经可以看到mgr节点存活了##########################################################################################
 ################################osd节点部署###############################################
 ########################################################################################## #在admin节点为store01 store02 store03安装软件
 ceph-deploy install --release pacific --osd store01
 #安装完软件过后,需要配置osd节点
 ceph-deploy --overwrite-conf osd create store01 --data /dev/sdb
 ceph-deploy --overwrite-conf osd create store01 --data /dev/sdc
 ceph-deploy --overwrite-conf osd create store02 --data /dev/sdb
 ceph-deploy --overwrite-conf osd create store02 --data /dev/sdc
 ceph-deploy --overwrite-conf osd create store03 --data /dev/sdb
 ceph-deploy --overwrite-conf osd create store03 --data /dev/sdc#添加另外两个mon节点
 ceph-deploy mon add mon02
 ceph-deploy mon add mon03#添加另外一个mgr节点
 ceph-deploy mgr create mgr02#新增mon节点和mgr节点过后,但是配置不会生效,在ceph.conf 中添加主机
 vi /usr/local/ceph/ceph.conf
 mon_host=192.168.0.102,192.168.0.103,192.168.0.104
 #再执行命令,推送到所有主机上
 ceph-deploy --overwrite-conf config push admin mon0{1,2,3} mgr0{1,2} store0{1,2,3}##############################################################################################
 ########################################客户端配置############################################
 ###############################################################################################客户端安装ceph-common
 yum install -y ceph-common
 #拷贝集群的配置文件以及密钥,以便找到集群+访问权限(客户端)
 scp 192.168.0.101:/etc/ceph/ceph.conf /etc/ceph/
 scp 192.168.0.101:/etc/ceph/ceph.client.admin.keyring  /etc/ceph/
 #创建rbd并使用rbd创建存储镜像供客户端使用(服务端)
 ceph osd pool create rbd 32 32
 rbd create --size 10G image1
 #此时已有一个10g的镜像,名叫image1
 #image镜像大小缩小为7G
 rbd resize --size 7G image1 --allow-shrink
 #image镜像大小扩展为15G
 rbd resize --size 15G image1
 #客户端映射image1镜像到本地
 rbd map image1
 lsblk
 rbd showmapped
 #格式化磁盘,挂载
 mkfs.ext4 /dev/rbd0
 mount /dev/rbd0 /mnt
 df -h
 #此时已挂载完毕,可以使用
 #创建镜像快照
 rbd snap create image1 --snap image-kz1
 #若误操作删除磁盘数据则
 #先卸载设备
 umount /mnt
 #使用image-kz1还原快照
 rbd snap rollback image1 --snap image-kz1
 #再挂载
 mount /dev/rbd0 /mnt
 ls /mnt