Ubuntu 18.04 部署 ceph 及bug解决

Ubuntu 18.04 部署 ceph 12.2.13 luminous 及bug解决

注意主机名和 Ceph中各个节点的名字要统一

Ceph

  • Ceph OSD (ceph-osd) - 控制数据存储,数据复制和恢复。
  • Ceph Monitor (ceph-mon) - 监控集群状态并运行 OSD 映射 和 CRUSH 映射。
  • Ceph Meta Data Server (ceph-mds) - 把 Ceph 作为文件系统使用。

使用下面这些 hostname /IP 安装:

	主机名              IP 地址
	u0205           192.168.0.205
	u0201           192.168.0.201
	u0204           192.168.0.204

1、准备工作

(在所有节点操作)

给用户无密码的sudo权限

	echo "{username} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/{
     username} 
	sudo chmod 0440 /etc/sudoers.d/{
     username}

安装和配置 NTP

安装 NTP 来同步所有节点的日期和时间。

	apt-get update
	apt install ntpdate
	ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
	ntpdate ntp.aliyun.com

安装 Python

需要 python 包来建立 ceph 集群。安装 python 和 python-pip。

	apt-get install -y python python-pip parted

配置 Hosts 文件

用 vim 编辑器编辑所有节点的 hosts 文件。

	vim /etc/hosts

	192.168.0.205           u0205
	192.168.0.201           u0201
	192.168.0.204           u0204

ping 主机名来测试网络连通性。

	ping osd1

2、配置 SSH 服务器

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

3、创建 Ceph 集群

在 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

安装 Ceph 到所有节点

从 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节点

检查所有 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

创建mgr节点

	ceph-deploy mgr create u0205

创建mds节点

	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

挂载ceph文件系统

查看配置启用了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

4、配置 Ubuntu 防火墙

出于安全考虑,需要打开 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

Bug记录

  1. Bug记录(运行 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?
  • 解决方法:切换到osd1的终端搜索进程并结束相关进程
	ps -ef
	kill -9 {
     progresscode}
  1. Bug记录(运行 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)
  • 解决方法:将 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
  1. Bug记录(运行 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
  • Debug过程:切换到osd1终端,apt update 或者其他过程都提示缺少依赖,重装系统解决。
  1. Bug记录(运行 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
  1. Bug记录(旧OSD节点未删除,创建新集群时候的报错)
	[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
  • 出现原因:旧OSD节点保存的keyring文件仍是旧文件,需要替换内容
	//从mon节点得到key
	ceph auth get client.bootstrap-osd

得到key后,覆盖到OSD节点的 /var/lib/ceph/bootstrap-osd/ceph.keyring文件下

你可能感兴趣的:(Ceph,ubuntu,linux,服务器,ssh)