您的位置:首页 > 其它

Ceph 开源存储安装

2017-04-01 15:21 429 查看
测试架构信息:
Ceph-Admin172.17.0.50admin
Ceph-Mon172.17.0.40mon
Ceph-OSD01172.17.0.41osd01
Ceph-OSD02172.17.0.42osd02
CEph-OSD03172.17.0.43osd03
Ceph-OSD04172.17.0.44osd04
Ceph-OSD05172.17.0.45osd05
Ceph-MDS172.17.0.49msd

一、系统初始配置
安装系统centos 7.3 最小化安装

yum 源
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo[/code] 
配置网络:
echo "DNS1=172.16.1.2" >> /etc/sysconfig/network-scripts/ifcfg-ens192
/etc/init.d/network restart


配置host文件:
echo "172.17.0.50 admin" >> /etc/hosts
echo "172.17.0.40 mon" >> /etc/hosts
echo "172.17.0.41 osd01" >> /etc/hosts
echo "172.17.0.42 osd02" >> /etc/hosts
echo "172.17.0.43 osd03" >> /etc/hosts
echo "172.17.0.44 osd04" >> /etc/hosts
echo "172.17.0.45 osd05" >> /etc/hosts
echo "172.17.0.49 msd" >> /etc/hosts
echo "172.17.0.60 ceph-client" >> /etc/hosts
更改电脑名,需重启:
hostnamectl set-hostname servername


配置adminSSH无密码登陆各节点:
ssh-keygen
ssh-copy-id root@mon
ssh-copy-id root@osd01
ssh-copy-id root@osd02
ssh-copy-id root@osd03
ssh-copy-id root@osd04
ssh-copy-id root@osd05
ssh-copy-id root@ceph-client


添加deploy源:
vim /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-{ceph-release}/{distro}/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-kraken/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.163.com/ceph/rpm-kraken/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
yum update -y
yum install ceph-deploy -y


同步时间:
启用可选软件库:

yum -y install epel-release
yum install yum-plugin-priorities -y
yum install ntp ntpdate ntp-doc -y
yum install sysstat -y
yum install net-tools -y
yum install wget -y


配置防火墙:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6789:7100 -j ACCEPT


在各 Ceph 节点创建新用户:
ssh root@mon
sudo useradd -d /home/cephuser -m cephuser
sudo passwd cephuser
ssh root@osd01
sudo useradd -d /home/cephuser -m cephuser
sudo passwd cephuser
ssh root@osd02
sudo useradd -d /home/cephuser -m cephuser
sudo passwd cephuser
ssh root@osd03
sudo useradd -d /home/cephuser -m cephuser
sudo passwd cephuser
ssh root@osd04
sudo useradd -d /home/cephuser -m cephuser
sudo passwd cephuser
ssh root@osd05
sudo useradd -d /home/cephuser -m cephuser
sudo passwd cephuser


确保各 Ceph 节点上新创建的用户都有 sudo 权限。
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
chmod 0440 /etc/sudoers.d/cephuser


允许无密码 SSH 登录
ssh-copy-id cephuser@mon
ssh-copy-id cephuser@osd01
ssh-copy-id cephuser@osd02
ssh-copy-id cephuser@osd03
ssh-copy-id cephuser@osd04
ssh-copy-id cephuser@osd05
ssh-copy-id cephuser@msd


修改 ceph-deploy 管理节点上的 ~/.ssh/config 文件
vi ~/.ssh/config
Host mon
Hostname mon
User cephuser
Host osd01
Hostname osd01
User cephuser
Host osd02
Hostname osd02
User cephuser
Host osd03
Hostname osd03
User cephuser
Host osd04
Hostname osd04
User cephuser
Host osd05
Hostname osd05
User cephuser


开放所需端口
firewall-cmd --zone=public --add-port=6789/tcp --permanent
firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent


不需要控制终端: 注释Defaults requiretty

Defaults requiretty修改为 #Defaults requiretty

关闭SELINUX
setenforce 0
vi /etc/selinux/config
SELINUX=disabled


二、存储集群

创建一个 Ceph 存储集群
mkdir my-cluster
cd my-cluster
ceph-deploy new mon


把 Ceph 配置文件里的默认副本数从 3 改成 2 ,这样只有两个 OSD 也可以达到 active + clean 状态。把下面这行加入 [global] 段:
vi ./ceph.conf
osd pool default size = 2


如果你有多个网卡,可以把 public network 写入 Ceph 配置文件的 [global] 段下
public network = {ip-address}/{netmask}
cluster network = {cluster-network/netmask}


安装ceph OSD
ceph-deploy install mon osd01 osd02 osd03


配置初始 monitor(s)、并收集所有密钥:
ceph-deploy mon create-initial


如果在某些地方碰到麻烦,想从头再来,可以用下列命令清除配置:
ceph-deploy purge osd02
ceph-deploy purgedata {ceph-node} [{ceph-node}]
ceph-deploy forgetkeys   !!!!!!!!


添加两个 OSD:
ssh osd01
rm -rf /var/local/osd01
sudo mkdir /var/local/osd01
exit
ssh osd02
rm -rf /var/local/osd02
sudo mkdir /var/local/osd02
exit


然后与管理节点执行ceph-deploy 准备OSD
ceph-deploy osd prepare osd01:/dev/sdb osd02:/dev/sdb


激活osd:
ceph-deploy osd activate osd01:/dev/sdb osd02:/dev/sdb


用 ceph-deploy 把配置文件和 admin 密钥拷贝到管理节点和 Ceph 节点,这样你每次执行 Ceph 命令行时就无需指定 monitor 地址和 ceph.client.admin.keyring 了。
ceph-deploy admin admin mon osd01 osd02


确保你对 ceph.client.admin.keyring 有正确的操作权限
chmod +r /etc/ceph/ceph.client.admin.keyring
ceph health
查看OSD tree
ceph osd tree


设置ceph集群自启动
在各节点需要执行如下命令:
systemctl enable ceph-mon.target
systemctl enable ceph-osd.target
systemctl enable ceph.target
ssh mon "systemctl enable ceph-mon.target;systemctl enable ceph-osd.target;systemctl enable ceph.target"


CEPH操作命令:
ceph health
ceph -w  打印ceph信息
ceph df集群使用情况
ceph status集群状态
ceph -s
ceph osd tree
ceph osd stat
ceph osd dump
ceph quorum_statusmon的数量状态
ceph mds stat元数据状态
ceph mds dump状态信息
systemctl restart ceph-osd.target 重启osd 服务


三、扩展集群

添加OSD
ceph-deploy osd prepare osd03:/dev/sdb
ceph-deploy osd activate osd03:/dev/sdb
ceph -w


添加元数据服务器
ceph-deploy install mds
ceph-deploy mds create mds
ceph-deploy admin mds


添加 MONITORS
vi ceph.conf
public network = 172.17.0.0/23
ceph-deploy mon add osd01 osd02 osd03
ceph-deploy --overwrite-conf mon add osd03
ceph quorum_status --format json-pretty查看mon法定人数


添加 RGW 例程
ceph-deploy rgw create node1


RGW 例程默认会监听 7480 端口,可以更改该节点 ceph.conf 内与 RGW 相关的配置,如下:
[client]
rgw frontends = civetweb port=80


四、管理、维护
ceph 日志
/var/log/ceph
iostat -x
df -h
ceph osd stat
ceph health 、 ceph -s 、或 ceph -w
systemctl restart ceph-osd.target 重启osd 服务


最大线程数
sysctl -w kernel.pid_max=4194303
配置 kernel.pid_max 写入配置文件 /etc/sysctl.conf
kernel.pid_max = 4194303


命令获取归置组列表
ceph pg dump
要根据指定归置组号查看哪些 OSD 位于 Acting Set 或 Up Set 里,执行
ceph pg map {pg-num}
其结果会告诉你 osdmap 版本( eNNN )、归置组号( {pg-num} )、 Up Set 内的 OSD ( up[] )、和 Acting Set 内的 OSD ( acting[] )。
osdmap eNNN pg {pg-num} -> up [0,1,2] acting [0,1,2]

修改单个节点的配置文件ceph.conf等如下
ceph-deploy --overwrite-conf config push mon osd01 osd02 osd03 osd04


添加心跳地址
cluster network = 172.17.0.0/23


五、使用

创建存储池:
ceph osd pool create {pool-name} pg_num
ceph osd pool create poolceph01 128
确定 pg_num 取值是强制性的,因为不能自动计算。下面是几个常用的值:

少于 5 个 OSD 时可把 pg_num 设置为 128
OSD 数量在 5 到 10 个时,可把 pg_num 设置为 512
OSD 数量在 10 到 50 个时,可把 pg_num 设置为 4096
OSD 数量大于 50 时,你得理解权衡方法、以及如何自己计算 pg_num 取值
ceph osd lspools列出存储池
ceph-mds -i mds -d


存入/检出对象数据
ceph osd map {poolname} {object-name}


在管理节点上,通过 ceph-deploy 把 Ceph 安装到 ceph-client 节点。
ceph-deploy install ceph-client


在管理节点上,用 ceph-deploy 把 Ceph 配置文件和 ceph.client.admin.keyring 拷贝到 ceph-client 。
ceph-deploy admin ceph-client


创建 CEPH 文件系统

关于存储池的管理请参考 存储池 。例如,要用默认设置为文件系统创建两个存储池,你可以用下列命令:
$ ceph osd pool create cephfs_data <pg_num>
$ ceph osd pool create cephfs_metadata <pg_num>
创建好存储池后,你就可以用 fs new 命令创建文件系统了:
$ ceph fs new <fs_name> <metadata> <data>
例如:
$ ceph fs new cephfs cephfs_metadata cephfs_data
$ ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
文件系统创建完毕后, MDS 服务器就能达到 active 状态了,比如在一个单 MDS 系统中:
$ ceph mds stat
e5: 1/1/1 up {0=a=up:active}


用内核驱动挂载 CEPH 文件系统

要挂载 Ceph 文件系统,如果你知道监视器 IP 地址可以用 mount 命令、或者用 mount.ceph 工具来自动解析监视器 IP 地址。例如:
sudo mkdir /mnt/mycephfs
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs
要挂载启用了 cephx 认证的 Ceph 文件系统,你必须指定用户名、密钥。
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==
前述用法会把密码遗留在 Bash 历史里,更安全的方法是从文件读密码。例如:
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret
关于 cephx 参见认证。

要卸载 Ceph 文件系统,可以用 umount 命令,例如:
sudo umount /mnt/mycephfs
---
要把 Ceph 文件系统挂载为用户空间文件系统,可以用 ceph-fuse 命令,例如:
sudo mkdir /home/usernname/cephfs
sudo ceph-fuse -m 192.168.0.1:6789 /home/username/cephfs


创建块设备:
ceph-deploy install ceph-client
ceph-deploy admin ceph-client


配置块设备

在 ceph-client 节点上创建一个块设备 image 。
rbd create foo --size 4096 [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]
rbd create foo --size 4096 -m mon -k /etc/ceph/ceph.client.admin.keyring


在 ceph-client 节点上,把 image 映射为块设备。
sudo rbd map foo --name client.admin [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]
rbd map foo --name client.admin -m mon -k /etc/ceph/ceph.client.admin.keyring


在 ceph-client 节点上,创建文件系统后就可以使用块设备了。
sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo
此命令可能耗时较长。

在 ceph-client 节点上挂载此文件系统。
sudo mkdir /mnt/ceph-block-device
sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device
cd /mnt/ceph-block-device


查看块信息
rbd ls


#新建rbd 块:
rbd create test001 --size 100G --image-format 2 --image-feature  layering
rbd ls
rbd map test001
mkfs.ext4 -f /dev/rdb0
mount /dev/rbd0 /mnt/data


dd测速:
dd if=/dev/zero of=/mnt/mycephfs/zero bs=8k count=200000 conv=fdatasync


同步配置文件
ceph-deploy --overwrite-conf admin osd01


六、高级应用

缓存设置
冷热分层

学习中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ceph