在linux Ubuntu16上搭建ceph分布式文件系统(四节点)实测有效!

特别注意:如果命令直接复制粘贴出现错误,则手动输入可解决 

参考教程:

https://blog.csdn.net/qq_24916117/article/details/47909697

第一步~~~.准备  4个Ubuntu 16.04 Server 虚拟机(可以使用VMware或者VirtualBox)

配置好每个虚拟机的IP 以及hostname (很重要!)

我的四台虚拟机配置如下:(ip根据个人的网络环境配置,记得虚拟机网络选择桥接模式)

①虚拟机1 :

hostname:ceph ;

IP :192.168.93.146(用户名root1(199077))

这台虚拟机对应下图admin-node节点 用来安装ceph-deploy 进行ceph部署使用,基本上大部分操作都在这台机器上

②虚拟机2:

hostname:ceph1 ;

IP :192.168.93.145(用户名root2(199077))

这台虚拟机对应下图node1节点,用来安装monitor监控节点.

③虚拟机3: 

hostname:ceph2 ;

IP :192.168.93.142(用户名root3(199077))

这台虚拟机对应下图node2节点,用来安装osd节点1

④虚拟机4: 

hostname:ceph3 ;

IP :192.168.93.143(用户名root4(199077))

这台虚拟机对应下图node3节点,用来安装osd节点2 .

配置好后ping www.baidu.com 看是否可以上网。

特别注意的是:再开始配置集群之前,要关闭各个节点上的防火墙:sudo ufw disable。

第二步~~~.在虚拟机1上也就是ceph(hostname是ceph)上执行以下三个命令安装cephdeploy

(1)添加 release key :

wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
echo deb https://download.ceph.com/debian/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
sudo apt install ceph-deploy
sudo useradd -d /home/cephuser -m cephuser
sudo chmod 0440 /etc/sudoers.d/cephuser

passwd cephuser
chmod 0440 /etc/sudoers.d/cephuser
sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers

sudo chmod 0440 /etc/sudoers.d/cephuser
ssh-copy-id ceph1
ssh-copy-id ceph2
ssh-copy-id ceph3

osd pool default size = 2
sudo service ceph restart ceph-mon
1. ceph-deploy mon create-initial  
1. ceph-deploy osd prepare ceph2:/var/local/osd0 ceph3:/var/local/osd1  
具体说明,以挂载/dev/sdb1为例:
<fs spec> :
分区定位,可以给UUID或LABEL,例如:UUID=6E9ADAC29ADA85CD或LABEL=software
<fs file> : 具体挂载点的位置,例如:/data
<fs vfstype> : 挂载磁盘类型,linux分区一般为ext4,windows分区一般为ntfs
<fs mntops> : 挂载参数,一般为defaults
<fs freq> : 磁盘检查,默认为0
<fs passno> : 磁盘检查,默认为0,不需要检查

(2)添加Ceph软件包源,用Ceph稳定版

(3)更新你的仓库,并安装 ceph-deploy :

sudo apt update

 

第三步~~~.在四台虚拟机上都安装ntp与openssh-server ,实现时间同步以及ceph 节点ssh访问ceph1 ceph2 ceph3节点,用cephuser用户。

 

四台虚拟机上都执行以下2个命令:

sudo apt-get install ntp  

sudo apt-get install openssh-server  

第四步~~~.在ceph ceph1 ceph2 ceph3 虚拟机上新建一个用户 (我在4台虚拟机上全是新建的cephuser用户,以后四台机器上的所有操作均在该用户下执行。直到整个配置过程结束!!该用户具有sudo权限

4台机器上均执行:

passwd cephuser

echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser

或者执行:

useradd -m -s /bin/bash cephuser

echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser

也可以在虚拟机ceph上使用ssh链接ceph1 ceph2 ceph3虚拟机后再各自创建cephuser用户。

首先在虚拟机ceph里面配置好hosts

在虚拟机ceph上执行:

sudo nano /etc/hosts  

在后面添加

192.168.93.146 ceph

192.168.93.145 ceph1

192.168.93.142 ceph2

192.168.93.143 ceph3                              

使用虚拟机ceph ssh链接ceph1 (root2是我建虚拟机ceph1的时候创建的默认用户,cephuser是我新建的用户) 

执行: 

ssh root2@ceph1

再执行:

sudo useradd -d /home/cephuser -m cephuser

passwd cephuser

echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser

链接ceph ceph2 ceph3 执行类似操作!

第五步~~~.ceph虚拟机生成ssh-keygen 并复制到ceph1 ceph2 ceph3 节点上,实现ceph无密码访问其余节点。

 

ceph上执行:(执行ssh-keygen后全部按回车键)

1. ssh-keygen  

2. (全按回车键,默认)     

  

修改 ~/.ssh/config

[plain] view plain copy

1. sudo nano ~/.ssh/config  

config里面加上:

Host ceph

    Hostname ceph

    User cephuser

Host ceph1

    Hostname ceph1

    User cephuser

Host ceph2

    Hostname ceph2

    User cephuser

Host ceph3

    Hostname ceph3

User cephuser

 

然后,将配置文件的权限更改为644。

chmod 644 ~/.ssh/config

现在使用ssh-copy-id命令将密钥添加到所有节点。

ssh-keyscan ceph1 ceph2 ceph3 >> ~/.ssh/known_hosts

现在就可以在主节点ceph通过如下命令无密码访问其余节点,如:

ssh ceph1

 

因为我们用的是cephuser用户,而非root用户,所以执行上述ssh-copy-id 命令可能出现错误,可尝试执行如下命令:

1. ssh-copy-id cephuser@ceph1  

2. ssh-copy-id cephuser@ceph2  

3. ssh-copy-id cephuser@ceph3 

 

 

第六步~~~. 在ceph(admin节点) 创建my-cluster 目录并进入

1. mkdir my-cluster  

2. cd my-cluster

(注意下面所有的操作都在此目录下执行,直到整个配置过程结束,有些配置文件会生成在里面)

执行:

ceph-deploy new ceph1

会在my-cluster下生成三个文件

Ceph configuration file, a monitor secret keyring, and a log file

修改Ceph configuration file文件 

sudo nano ceph.conf  

并在后面加上 第一个参数2是副本数量,第二个2000是 日志大小约为2G

osd journal size = 2000

Public Network = 192.168.93.140/150

Cluster Network = 192.168.93.140/150

第七步~~~.在ceph,ceph1 ,ceph2 ,ceph3  个节点上安装ceph

ceph节点上执行:

ceph-deploy install ceph ceph1 ceph2 ceph3 

       

(可能会报错,大部分是网络问题,继续重复执行就是!直到成功为止!可以选择一个节点一个节点的安装,即在ceph上分别执行

ceph-deploy install ceph

ceph-deploy install ceph1

ceph-deploy install ceph2

ceph-deploy install ceph3

 

执行ceph-deploy install ceph1容易出现错误:

 E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)

[mon][WARNIN] E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

[mon][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

解决办法:

将监控节点ceph1重启,然后再在主节点ceph上再次执行ceph-deploy install ceph1

,直到成功。

 

必须确保四个节点上的ceph开启成功,在每个节点上执行:

systemctl status ceph.service  

查看ceph是否处于active状态,不是的话执行:

 

启动ceph服务。


第八步~~~.在ceph上执行

 

如果出现错误:

RuntimeError: config file /etc/ceph/ceph.conf exists with different content; use --overwrite-conf to overwrite

可执行如下命令:

ceph-deploy --overwrite-conf mon create-initial

 

会在my-cluster目录下生成四个文件

{cluster-name}.client.admin.keyring 

{cluster-name}.bootstrap-osd.keyring {cluster-name}.bootstrap-mds.keyring {cluster-name}.bootstrap-rgw.keyring

 

收集远程监控节点ceph1上的密钥到当前文件夹,

ceph-deploy gatherkeys ceph1

 

第九步~~~.

为了快速安装,这里我们使用文件夹形式来添加OSD而不是以硬盘,ceph2 ceph3节点上创建osd 每个节点创建一个osd文件目录

[plain] view plain copy

1. ssh ceph2  

2. sudo mkdir /var/local/osd0 

3. exit  

4. ssh ceph3  

5. sudo mkdir /var/local/osd1  

6. exit  

  // 因为ceph3上无足够空间,故改到ceph1:/var/local/osd1

如果osd节点出现错误,想要移除集群,则使用命令: ceph osd crush remove osd.1//osd.1是osd节点名。

 

第十步~~~. 继续在ceph上执行:

准备osd 命令:

[plain] view plain copy

执行准备命令时,出现错误:

ceph-deploy osd: error: argument subcommand: invalid choice: 'prepare' (choose from 'list', 'create')

解决办法:

重新换一个管理节点,从头来过。

激活osd命令:

[plain] view plain copy

1. ceph-deploy osd activate ceph2:/var/local/osd0 ceph3:/var/local/osd1 

执行激活命令时,出现错误:

RuntimeError: Failed to execute command: /usr/sbin/ceph-disk -v activate --mark-init systemd --mount /var/local/osd0

ERROR: error creating empty object store in /var/local/osd0: (13) Permission denied

解决办法:在各个osd节点上给/var/local/osd0/和/var/local/osd1/添加权限

如下:

ceph2上执行:

sudo chmod 777  /var/local/osd0/

ceph3上执行:

sudo chmod 777  /var/local/osd1/  

 

 

执行以下两条:

[plain] view plain copy

1. ceph-deploy admin ceph ceph1 ceph2 ceph3  

2. sudo chmod +r /etc/ceph/ceph.client.admin.keyring  

 

第十二~~~.最后在ceph执行:ceph health 命令,不出意外就会输出HEALTH_OK ,恭喜你 ceph三节点的集群安装成功!

该步容易出现错误:

HEALTH_ERR 64 pgs are stuck inactive for more than 300 seconds; 64 pgs stuck inactive; 64 pgs stuck unclean

或者

HEALTH_WARN 64 pgs degraded; 64 pgs stuck degraded; 64 pgs stuck unclean; 64 pgs stuck undersized; 64 pgs undersized

 

解决办法:

先关闭各个节点的防火墙:

sudo ufw disable

然后在各个节点的配置文件/etc/ceph/ceph.conf中加入如下内容:

osd max object name len = 256  

osd max object namespace len = 64  

 

 

第十二步:增加上述四个节点的硬盘空间(4个节点上的操作均相同)

(1)先使用gparted软件增加硬盘空间。硬盘名称为:/dev/sda3,大小为20G,

(2)新建文件夹:sudo mkdir /home/sda3

(3)将新建的/dev/sda3硬盘挂载到目录/home/sda3中:

sudo  mount -t ext4 /dev/sda3  /home/sda3

(4) 再将该硬盘设置为开机启动:

1) 格式化新硬盘:sudo mkfs.ext4 /home/sda3

2) 查看新硬盘的UUID:sudo blkid ,效果如下:

  /dev/sda1: UUID="7aa7388d-277a-42e5-a301-d0d57eb48d4f" TYPE="ext4" PARTUUID="7c2a71eb-01"

/dev/sda3: UUID="49201ae9-d7e0-4b51-9e0c-d9d169cfc374" TYPE="ext4" PARTUUID="7c2a71eb-03"

/dev/sda5: UUID="e01871b9-4ee7-47d9-9066-f8782fe9f241" TYPE="swap" PARTUUID="7c2a71eb-05"

/dev/sr0: UUID="2017-08-01-11-51-33-00" LABEL="Ubuntu 16.04.3 LTS amd64" TYPE="iso9660" PTUUID="0d66cd15" PTTYPE="dos"

3)找到/dev/sda3的UUID,

4)将分区信息写入/etc/fstab文件中让它永久挂载

       Sudo nano /etc/fstab

在该文件中加入如下内容:

UUID=49201ae9-d7e0-4b51-9e0c-d9d169cfc374   /home/sda3  ext4 defaults 0 1

注:

<fs spec> <fs file> <fs vfstype> <fs mntops> <fs freq> <fs passno>

修改完/etc/fstab文件后,运行sudo mount -a命令验证一下配置是否正确。如果配置不正确可能会导致系统无法正常启动。

5)重启系统!执行df -h查看是否挂载成功。

 

 

 

 

 

 

 

 

第十三步:在ceph2 ceph3上增加monitor监控节点

 

 

 

 

 

 

 

 

第十四步: 分布式文件系统的挂载

 

 

 

 

 


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值