本文参考: centos7.6搭建ceph集群
本文是我学习ceph所记的学习笔记,建议ceph小白阅读
仅限自学ceph时使用,在工作环境中不要用本文的安装方法!
Vmware Workstation
虚拟机CentOS-7-x86_64-DVD-2009.iso
我自己使用的是CentOS 7,在Ubuntu等操作系统或不同版本的CentOS下配置会有一定差异
总共使用了三个节点,需要配置三个服务器,分别为node1,node2,node3
其中node1作为管理节点
Linux虚拟机在初始是没有固定IP的,每次会被分配一个随机的IP。但这样不利于ssh无密码通信(后文会说如何配置),因此第一步是给每台服务器都配置一个固定的IP地址。
这里以node1为例
输入su进入管理者模式,输入密码后(输入的密码是不可见的,输完按回车就完事)用户名由bill变为root,命令行前的提示符也由$变为#
接着输入vi /etc/sysconfig/network-scripts/ifcfg-ens33,打开ifcfg-ens33文件编辑网络设置
[bill@node1 ~]$ su
Password:
[root@node1 bill]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
ens33配置文件需要修改的地方:
1.将BOOOTPROTO修改为static
2.修改最后四行,如果没有的话手动增加 IPADDR=“192.168.14.101” # 这里写IP地址,可以自行设定 NETMASK=“255.255.255.0”# 这里是子网掩码 GATEWAY=“192.168.14.2”# 这里是网关地址 DNS1=“114.114.114.114”# DNS,写我这个就好
不知道子网掩码或网关的可以打开Vmware上边工具栏→编辑→虚拟网络编辑器
在上面的选项中选择VMnet8,之后界面下面就是子网掩码,右侧NAT设置按钮打开后有网关地址
修改好的ifcfg-ens33文件如下
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="e44f4d7a-1385-4018-a565-d0f56063bff2"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.14.101"
NETMASK="255.255.255.0"
GATEWAY="192.168.14.2"
DNS1="114.114.114.114"
完成后输入hostnamectl set-hostname @hostname,将域名改为你想要名字(我用的是node1,语句如下)
[root@node1 bill]# hostnamectl set-hostname node1
最后输入service network restart重启网络服务使修改生效
[root@node1 bill]# service network restart
node2与node3配置同理,注意IPADDR与hostname不要设置成一样的
安装ntp同步三台服务器的时间
此操作需要在node1,node2和node3上各自操作一遍
安装语句,在命令行中依次执行
yum install -y ntp ntpdate ntp-doc
ntpdate 0.cn.pool.ntp.org
hwclock -w
systemctl enable ntpd.service
systemctl start ntpd.service
开头的参考文章里写道修改/etc/ntp.conf,但我下载完已经有了,因此略过
此操作只需在node1上进行,其他两个可选
具体操作可以参考链接: 配置centos7基于SSH的免密登陆
修改/etc/hosts文件,告诉节点域名对应的IP
首先打开/etc/hosts文件,在命令行中执行
vi /etc/hosts
在文件中加入如下数据
将node1,node2,node3改为你所设置的hostname
192.168.14.101 node1
192.168.14.102 node2
192.168.14.103 node3
保存并重启网络服务,在命令行中执行
service network restart
在node1上执行下列语句
ssh-keygen
在node1上执行下列语句,将语句中的node2和node3换成自己设置的hostname
ssh-copy-id root@node2
ssh-copy-id root@node3
这些操作需要在所有节点上都执行一遍,在命令行中依次执行下列语句
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
所有前置需求满足后,开始安装ceph
这些操作需要在所有节点上都执行一遍
将yum的安装源更改为阿里云的镜像
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
在命令行中执行
vim /etc/yum.repos.d/ceph.repo
这会打开ceph.repo文件(一般来说这是个新文件),在其中写入
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
priority=1
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/SRPMS
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1
写完保存即可
在安装ceph之前,我建议对所有节点进行备份或快照,如果你在后续的安装过程中出现问题,我的建议是将服务器复原或重新建立全部虚拟机,而不是在原有虚拟机上删除ceph后重新执行。因为后面用到的ceph-deploy工具有时会遗留一部分文件需要手动删除,对于新手来说很麻烦
在命令行中执行
更新源
yum makecache
yum update
安装ceph
yum install -y ceph
查看ceph版本看是否安装成功
ceph -v
注意除了ssh免密连接,前面所有操作都需要在三个节点上各执行一遍
接下来的操作仅需在管理节点(即你执行了ssh免密连接的节点,我的是node1)上执行
如果你都执行了免密连接,任选一个作为你的管理节点即可
在管理节点(node1)中执行命令行
yum install ceph-deploy
查看ceph-deploy版本看是否安装成功
ceph-deploy --version
在node1的root用户的根目录新建my-cluster文件夹并进入该文件夹
mkdir my-cluster
cd my-cluster
**后续node1中所有操作都在这个文件夹下执行
部署monitor
将node1,node2,node3换成你所设置的hostname
ceph-deploy new node1 node2 node3
使用ls命令查看当前文件夹下所有文件,可以看到有一个ceph.conf文件,使用vi命令打开
vim ceph.conf
在其中添加如下内容
osd pool default size = 2
public network = 192.168.14.0/24
public network的IP选择与网关相同的,后面的子网掩码查看前面的设置即可
修改后的文件如下
mon_initial_members = node1, node2,node3
mon_host = 192.168.3.61 ,192.168.3.71 ,192.168.3.151
auth_cluster_required = none
auth_service_required = none
auth_client_required = none
osd pool default size = 2
public network = 192.168.14.0/24
接下来部署monitor并获取密钥
在命令行执行
ceph-deploy mon create-initial
查看当前集群状态看是否部署成功
ceph -s
在三个节点都创建文件夹代替磁盘
在三个节点分别执行命令行
mkdir /var/local/osd
chmod 777 -R /var/local/osd
在node1执行命令行
准备挂载
ceph-deploy osd prepare node1:/var/local/osd node2:/var/local/osd1 node3:/var/local/osd1
激活挂载
ceph-deploy osd activate node1:/var/local/osd node2:/var/local/osd node3:/var/local/osd
查看是否完成
ceph -s
显示一下则完成
[root@192 my-cluster]# ceph -s
cluster 7372c3d8-b11a-40e0-b086-814e840f97f3
health HEALTH_OK
monmap e1: 3 mons at {node1=192.168.14.101:6789/0,node2=192.168.14.102:6789/0,node3=192.168.14.103:6789/0}
election epoch 4, quorum 0,1,2 node1,node2,node3
osdmap e15: 3 osds: 3 up, 3 in
flags sortbitwise,require_jewel_osds
pgmap v25: 64 pgs, 1 pools, 0 bytes data, 0 objects
31134 MB used, 23228 MB / 54363 MB avail
64 active+clean