注意主机名和 Ceph中各个节点的名字要统一
使用下面这些 hostname /IP 安装:
主机名 IP 地址
u0205 192.168.0.205
u0201 192.168.0.201
u0204 192.168.0.204
(在所有节点操作)
echo "{username} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/{
username}
sudo chmod 0440 /etc/sudoers.d/{
username}
安装 NTP 来同步所有节点的日期和时间。
apt-get update
apt install ntpdate
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate ntp.aliyun.com
需要 python 包来建立 ceph 集群。安装 python 和 python-pip。
apt-get install -y python python-pip parted
用 vim 编辑器编辑所有节点的 hosts
文件。
vim /etc/hosts
192.168.0.205 u0205
192.168.0.201 u0201
192.168.0.204 u0204
ping
主机名来测试网络连通性。
ping osd1
admin 节点是用来配置监控节点和 osd 节点的。本节均在在admin节点操作
为 ssh 创建一个配置文件
vim ~/.ssh/config
Host u0201
Hostname u0201
User {
username}
Host u0204
Hostname u0204
User {
username}
Host u0205
Hostname u0205
User {
username}
改变配置文件权限为 644。
chmod 644 ~/.ssh/config
为 admin 节点的 {username} 用户配置无密码 SSH 登录权限。
生成 {username}
的 ssh 密钥。
ssh-keygen
全部回车!让密码为空。
使用 ssh-copy-id
命令增加密钥到所有节点。
ssh-keyscan u0201 u0204 u0205>> ~/.ssh/known_hosts
ssh-copy-id u0201
ssh-copy-id u0204
ssh-copy-id u0205
尝试从 admin 节点登录 osd1 服务器,测试无密登录是否正常。
ssh u0201
在 admin 节点操作
从 python 仓库安装 Ceph 部署工具 ‘ceph-deploy’。
pip install ceph-deploy
mkdir cluster
cd cluster/
下一步,用 ceph-deploy
命令通过定义监控节点 u0205 创建一个新集群。
ceph-deploy new u0205
命令将在集群目录生成 Ceph 集群配置文件 ceph.conf
。
vim ceph.conf
在 [global]
块下,粘贴下面的配置。
# Your network address
public network = 192.168.0.0/24
osd pool default size = 2
从 admin 节点安装 Ceph 到所有节点。
将 Ceph 下载源替换为国内镜像
export CEPH_DEPLOY_REPO_URL=http://mirrors.163.com/ceph/debian-jewel
export CEPH_DEPLOY_GPG_URL=http://mirrors.163.com/ceph/keys/release.asc
ceph-deploy install u0201 u0204 u0205
到 mon 节点部署监控节点。
ceph-deploy --overwrite-conf mon create-initial
创建监控密钥
ceph-deploy gatherkeys u0205
检查所有 osd 节点的磁盘可用性。
ceph-deploy disk list u0201 u0204
在所有 OSD 节点上用 zap 选项删除gpt分区表。
ceph-deploy disk zap u0204 dev/sdb
创建osd节点
//有几个osd节点就运行几次
ceph-deploy osd create u0201 --data /dev/sda6
部署管理密钥到所有关联节点。
ceph-deploy admin u0205 u0204 u0201
在所有节点运行下面的命令,改变密钥文件权限。
chmod 644 /etc/ceph/ceph.client.admin.keyring
ceph-deploy mgr create u0205
ceph-deploy mds create u0205 u0204 u0201
创建新的存储池
ceph osd pool create cephpool 128
ceph osd pool create cephmetadata 128
ceph fs new cephfs cephpool cephmetadata
查看存储池状态
ceph fs ls
ceph mds stat
查看配置启用了cephx
认证
vim /etc/ceph/ceph.conf
[global]
...
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
导出 cephx
认证的 key
# ceph auth export client.admin
export auth(auid = 18446744073709551615 key=AQB5vWVexvYuFRAAVId1xt9CRmemzYZ1c4WqyQ== with 4 caps)
[client.admin]
key = AQB5vWVexvYuFRAAVId1xt9CRmemzYZ1c4WqyQ==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow *"
caps osd = "allow *"
新建文件夹并把 ceph 文件系统挂载到文件夹下
mkdir /home/cephfs
// 192.168.0.205:6789:/ 是指mon节点的ip
mount -t ceph 192.168.0.205:6789:/ /home/cephfs -o name=admin,secret=AQB5vWVexvYuFRAAVId1xt9CRmemzYZ1c4WqyQ==
检查集群状态
ceph -s
检查集群是否健康
ceph health
// size=1 时无备份,size=2 时是一比一备份
ceph osd pool set cephpool size 1
ceph osd pool set cephmetadata size 1
出于安全考虑,需要打开 Ubuntu 默认的防火墙。在所有节点开启 ufw,然后打开 admin、mon 和 osd 需要使用的端口。
在admin节点安装 ufw 包
sudo apt-get install -y ufw
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 2003/tcp
sudo ufw allow 4505:4506/tcp
sudo ufw enable
在监控节点 mon 安装 ufw。
sudo apt-get install -y ufw
sudo ufw allow 22/tcp
sudo ufw allow 6789/tcp
sudo ufw enable
登录到每个 osd 节点安装 ufw。
sudo apt-get install -y ufw
sudo ufw allow 22/tcp
sudo ufw allow 6800:7300/tcp
sudo ufw enable
ceph-deploy install u0201 u0204 u0205
时的报错) [osd1][WARNIN] E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
[osd1][WARNIN] E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
ps -ef
kill -9 {
progresscode}
ceph-deploy install u0201 u0204 u0205
时的报错) [osd1][WARNIN] No data was received after 300 seconds, disconnecting...
[osd1][INFO ] Running command: sudo ceph --version
[osd1][ERROR ] Traceback (most recent call last):
[osd1][ERROR ] File "/usr/local/lib/python2.7/dist-packages/ceph_deploy/lib/vendor/remoto/process.py", line 119, in run
[osd1][ERROR ] reporting(conn, result, timeout)
export CEPH_DEPLOY_REPO_URL=http://mirrors.163.com/ceph/debian-jewel
export CEPH_DEPLOY_GPG_URL=http://mirrors.163.com/ceph/keys/release.asc
ceph-deploy install u0201 u0204 u0205
时的报错)Ceph-deploy过程中提示无法安装程序,以下依赖无法被安装等问题。
[osd1][ERROR ] RuntimeError: command returned non-zero exit status: 100
[ceph_deploy][ERROR ] RuntimeError: Failed to execute command: env DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical apt-get --assume-yes -q --no-install-recommends install ca-certificates apt-transport-https
apt update
或者其他过程都提示缺少依赖,重装系统解决。ceph-deploy --overwrite-conf mon create-initial
时的报错) [u0205][INFO] Running command: ceph --cluster=ceph --admin-daemon /var/run/ceph/ceph-mon.u0205.asok mon_status
[ceph_deploy.mon][WARNIN] mon.u0205 monitor is not yet in quorum
在各个节点上执行
sudo pkill ceph
然后再在 mon 节点执行
ceph-deploy mon create-initial
[u0201][WARNIN] stderr: [errno 1] error connecting to the cluster
[u0201][WARNIN] --> RuntimeError: Unable to create a new OSD id
[u0201][ERROR ] RuntimeError: command returned non-zero exit status: 1
[ceph_deploy.osd][ERROR ] Failed to execute command: /usr/sbin/ceph-volume --cluster ceph lvm create --b
[ceph_deploy][ERROR ] GenericError: Failed to create 1 OSDs
keyring
文件仍是旧文件,需要替换内容 //从mon节点得到key
ceph auth get client.bootstrap-osd
得到key后,覆盖到OSD节点的 /var/lib/ceph/bootstrap-osd/ceph.keyring
文件下