Skyrim
Date:2016/12/16
[TOC]
1. 环境准备
1.1 环境架构图
- CEPH架构包含如下几个节点角色
- ADMIN Node:管理节点
- MON Node:监控节点/元数据MDS节点
- OSD Node:存储节点
OS:Ubuntu 14.04.04
OSD节点磁盘结构
root@C01:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 16G 0 disk
├─sda1 8:1 0 243M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 15.8G 0 part
├─C01--vg-root (dm-0) 252:0 0 13.8G 0 lvm /
└─C01--vg-swap_1 (dm-1) 252:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk #OSD Disk
sr0 11:0 1 579M 0 rom
OSD节点网络结构
- Eth0:Public Network
- Eth1:Cluster Network
1.2 环境准备
1.2.1所有节点操作
设置root免密码登录
sudo visudo -f /etc/sudoers
增加如下行,skyrim为用户名
skyrim ALL=(ALL) NOPASSWD:ALL
1.2.2 所有节点操作
修改host文件
所有节点增加如下内容
192.168.1.40 ADM
192.168.1.41 MON
192.168.1.60 N01
192.168.1.61 N02
192.168.1.62 N03
1.2.3 ADMIN节点操作
安装pssh工具
apt-get install -y pssh
- 设置以下别名:
alias pssh='parallel-ssh'
alias pscp='parallel-scp'
- 创建host文件列表hosts.txt:
MON
N01
N02
N03
N04
1.2.4 所有节点操作
创建ssh信任
- 所有节点运行如下命令
ssh-keygen
-
ADMIN节点复制public key到其它节点
需在普通用户权限下执行
,在对话窗口输入yes,然后输入对端用户密码。ssh-copy-id mon ssh-copy-id n01 ssh-copy-id n02 ssh-copy-id n03
测试方式
通过普通用户执行
pssh -h hosts uptime
如果全部结果都为SUCCESS
,则说明正常工作。
1.2.5 ADMIN操作
修改ububtu apt源
root@C01:~#nano /etc/apt/sources.list
- 增加网易APT源
deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
复制sources.list到其它节点
pscp -h hosts.txt /etc/apt/sources.list /etc/apt/
- 刷新源
pssh -h hosts `sudo apt-get update`
如果全部结果都为SUCCESS
,则说明正常工作。
1.3 安装ceph-deploy
- 以下操作只需要在
Admin
节点执行,首先需要增加ceph源:
安装ceph apt key
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
echo deb http://download.ceph.com/debian-{ceph-stable-release}/ $(lsb_release -sc)
main | sudo tee /etc/apt/sources.list.d/ceph.list
注意: ceph-stable-release是选择安装的版本,我部署时选择的是jewel!最新版本为infernalis!同时由于CFW的问题,因此我选择的是网易的国内镜像
echo deb http://mirrors.163.com/ceph/debian-jewel/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
- 安装ceph-deploy:
sudo apt-get update && sudo apt-get install -y ceph-deploy
生产环境还需要安装ntp服务,保证集群的时钟一致,这次只是为了测试,故省略这一步。另外由于ubuntu默认防火墙是关的,SELinux也没有安装,故不需要任何操作。使用centos安装时需要打开必要端口。
2.开始安装ceph集群
我们使用ceph-deploy部署,后续操作均在admin节点操作。 首先需要创建工作环境,该环境会保存所有的配置文件:
mkdir my-cluster
cd my-cluster
2.1 创建集群
ceph-deploy new mon
其中mon是monitor节点,执行该命令会生成ceph配置文件、monitor密钥文件以及日志文件。
2.2 修改默认冗余份数(此步骤只有在小于3个OSD节点时需要修改
)
默认的冗余份数是3,如果是2节点需要设置为2,如果osd节点大于2,则此步骤省略。
修改ceph.conf
文件,在[global]
下增加以下内容:
osd pool default size = 2
2.3 配置网卡和网络(OSD节点单网卡请忽略
)
OSD节点是双网卡,因此需要设置使用的网卡和网络地址
修改ceph.conf
文件,在[global]
下增加以下内容:
Public Network = 192.168.1.0/24
Cluster Network = 10.10.100.0/24
2.4 开始安装ceph
注:因为CFW的问题,管理节点ceph-Deploy前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
ceph-deploy install adm mon n01 n02 n03
2.5初始化mon节点和收集密钥信息
ceph-deploy mon create-initial
执行完毕,目录应该有以下文件:
{cluster-name}.client.admin.keyring
{cluster-name}.bootstrap-osd.keyring
{cluster-name}.bootstrap-mds.keyring
{cluster-name}.bootstrap-rgw.keyring
完成以上步骤,安装完成,但还没有配置osd节点。
2.6 配置osd节点
首先再次确认磁盘结构
OSD节点磁盘结构
root@C01:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 16G 0 disk
├─sda1 8:1 0 243M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 15.8G 0 part
├─C01--vg-root (dm-0) 252:0 0 13.8G 0 lvm /
└─C01--vg-swap_1 (dm-1) 252:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk #OSD Disk
sr0 11:0 1 579M 0 rom
格式化磁盘,注意我们使用的是/dev/sdb
:
ceph-deploy disk zap n01:sdb
ceph-deploy disk zap n02:sdb
ceph-deploy disk zap n03:sdb
以上步骤会清空磁盘的所有数据。 接下来创建osd,注意由于我们只是测试,故没有使用单独的磁盘作为journal,
实际在生产环境下,需要配备SSD分区作为journal,能够最大化IO吞吐量
。
ceph-deploy osd create n01:sdb
ceph-deploy osd create n02:sdb
ceph-deploy osd create n03:sdb
2.7 配置admin节点
admin节点同时也作为我们的client节点,需要拷贝其他节点的配置文件以及密钥,使得不需要指定mon地址以及用户信息就可以直接管理我们的ceph集群,执行以下命令即可:
ceph-deploy admin adm mon n01 n02 n03
sudo chmod +r /etc/ceph/ceph.client.admin.keyring # 保证具有读取的密钥的权限
2.8 测试结果
运行以下命令:
ceph health
确认返回HEALTH_OK
状态
ceph status
结果返回如下:
cluster 2a5b2748-6b23-4609-9614-1e838e11597c
health HEALTH_OK
monmap e1: 1 mons at {mon=192.168.1.41:6789/0}
election epoch 3, quorum 0 mon
osdmap e16: 3 osds: 3 up, 3 in
flags sortbitwise,require_jewel_osds
pgmap v52: 64 pgs, 1 pools, 57 bytes data, 4 objects
101 MB used, 45945 MB / 46046 MB avail
64 active+clean
确认返回active+clean
状态
ceph osd tree
确认所有osd节点up
状态