centOS7 适配 ceph LUMINOUS 版本,安装过程当中下载了jewel版本。。。node
管理节点:ceph_adminpython
一、一个双核CPU,2G内存,NAT链接:192.168.184.181,其中在/etc/resolv.conf文件中添加 linux
Nameserver 8.8.8.8web
nameserver 192.168.1.109swift
二、20G硬盘分区:vim
Kernel:3.10.0-693centos
安装虚拟机时设置好主机名。以后的操做中用虚拟机又新增了两个硬盘当作osd浏览器
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm服务器
安装成功会显示成功和已安装的EPEL版本网络
sudo vim /etc/yum.repos.d/ceph.repo
如下为添加的文件内容
[ceph-noarch] name=Ceph noarch packages baseurl=https://download.ceph.com/rpm/el7/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc |
直接执行安装最新稳定版
如需指定具体版本,在baseurl中rpm后添加“-版本名”如:
baseurl=https://download.ceph.com/rpm-luminous/el7/noarch
sudo yum update && sudo yum install ceph-deploy
会先检查须要安装和升级的组件,检查完毕显示清单并询问是否继续:
输入:y 回车
以后有一个警告,没有处理。
而后开始安装,期间会出现下载失败,而后会自动尝试其余镜像:
此处缘由是网速太慢。。。
下载完成问是否继续:
库包更新完成后开始安装ceph-deploy:
期间询问继续都yes;
最后安装成功:
sudo yum install ntp ntpdate ntp-doc
sudo yum install openssh-server
3.一、若是安装时没有设置主机名,此时修改全部节点主机名hostname(此步骤只是用于区分节点,方便管理)
hostnamectl set-hostname {hostname}
管理节点为:ceph_admin
集群节点都为:ceph_node
查看主机名:hostnamectl status
/etc/hostname 会自动更新
而后手动更新/etc/hosts
3.二、给全部集群节点添加ceph用户:ceph(测试用,实际部署请使用其余名字)
sudo useradd -d /home/{username} -m {username}
useradd -d /home/ceph -m ceph
passwd {输入密码}
3.三、确保各集群节点上新建立的用户都有 sudo 权限。
echo "{username} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/{username}
echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
sudo chmod 0440 /etc/sudoers.d/{username}
sudo chmod 0440 /etc/sudoers.d/ceph
4.一、不使用sudo或者root用户生成ssh密钥对:
在ceph用户下执行
ssh-keygen
提示 “Enter passphrase” 时,直接回车,口令即为空:
4.二、把公钥拷贝到各集群节点,把下列命令中的 {username} 替换成前面建立部署 Ceph 的用户里的用户名。
ssh-copy-id ceph@ceph_admin
修改 ceph-deploy 管理节点上的 ~/.ssh/config 文件,这样 ceph-deploy 就能用你所建的 用 户 名 登 录 Ceph 节点了,而无需每次执行 ceph-deploy 都要指定 --username {username} 。
sudo vi ~/.ssh/config
添加如下内容:
firewall
监视器:
sudo firewall-cmd --zone=public --add-service=ceph-mon --permanent
存储器和元数据:
sudo firewall-cmd --zone=public --add-service=ceph --permanent
当即生效:
sudo firewall-cmd --reload
iptables
要开放 Ceph Monitors 使用的 6789 端口和 OSD 使用的 6800:7300 端口范围:
sudo iptables -A INPUT -i ens33 -p tcp -s 192.168.184.181/255.255.252.0 --dport 6789 -j ACCEPT
回车后没有反应。。。
重启生效:
/sbin/service iptables save
执行报以下错误:
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.
解决方法:
一、先执行以下命令:
systemctl stop firewalld
systemctl mask firewalld
二、安装iptables services
yum install iptables-services
三、设置开机启动
systemctl enable iptables
四、重启iptables service
systemctl restart iptables
最后执行
/sbin/service iptables save
sudo setenforce 0
9.一、安装优先级/首选项包
sudo yum install yum-plugin-priorities
9.二、配置使用 Yum Priorities
使用文本编辑器打开 Yum Priorities 配置文件,确保配置文件中包含下面的行
编辑 CentOS-Base 源配置文件 /etc/yum.repos.d/CentOS-Base.repo
1. 将priority=1分别添加到 [base], [updates]和 [extras]这几个源记录的后面
2. 将priority=2添加到 [centosplus] 源记录的后面
注意:优先级由 1 ~ 99 的 99 个数表示,1 的优先级最高。优先级小的源即便有某软件的较新版本,若是优先级高的源中没有,在启用该插件的状况下,系统也没法安装/升级到该较新版本。图形界面的 YUM 工具通常默认就已经包含了优先级插件。
mkdir my-cluster
cd my-cluster
ceph-deploy 会把文件输出到当前目录,因此请确保在此目录下执行 ceph-deploy全部命令 。
2.一、建立集群监视者
使用自身节点为监视节点:
ceph-deploy new ceph_admin
2.二、副本。把 Ceph 配置文件里的默认副本数从 3 改为 2 ,这样只有两个 OSD 也能够达到 active + clean 状态。
在 [global] 段加入:osd pool default size = 2
2.三、网卡
在 [global] 段加入:public network = {ip-address}/{netmask}
vi ceph.conf
2.四、安装 Ceph
ceph-deploy install ceph_admin
若是报错:
把/etc/yum.repos.d/下ceph.repo改成ceph-deploy.repo便可。
再次安装ceph:
ceph-deploy install ceph_admin
2.五、初始化监视器monitor
ceph-deploy mon create-initial
若是报错:
执行:ceph-deploy --overwrite-conf mon create-initial
3.一、确保你对 ceph.client.admin.keyring 有正确的操做权限。
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
执行无返回。。。
3.二、检查集群健康:
ssh ceph_admin sudo ceph health
若是报错:
chmod 600 /home/ceph/.ssh/config
再次执行:ssh ceph_admin sudo ceph health
更完整的:ssh ceph_admin sudo ceph -s
此处由于尚未加入osd,因此health_err所报问题正常。
4.一、使用虚拟机为系统再添加一块20G硬盘和一块10G的硬盘
使用分区命令fdisk为这设备(/dev/sdb和/dev/sdc)分区成sdb1和sdb5和sdc1
(详细步骤请百度)
初始化文件格式为xfs
mkfs.xfs /dev/sdb1
mkfs.xfs /dev/sdb5
mkfs.xfs /dev/sdc1
4.二、建立osd
ceph-deploy osd create ceph_admin:/dev/sdb1 ceph_admin:/dev/sdb5 ceph-admin:/dev/sdc1
而后须要激活(文档上说使用create命令不须要再激活,但健康检查发现仍然没有osd,再次激活后则显示有osd了):
ceph-deploy osd activate ceph_admin:/dev/sdb1 ceph_admin:/dev/sdb5 ceph_admin:/dev/sdc1
4.三、健康检查:
ceph health
缘由是OSD的hash规则与本部署不符。。。(本次部署只有一个主机。。。)
ceph osd crush rule dump
注意其 type 为 “host”,也就是说 CRUSH 不会为一个 PG 选择在同一个 host 上的两个 OSD。而个人环境中,目前只有 ceph_admin上的三个 OSD 是in 的,所以,CRUSH 没法为全部的 PG 分配不一样osd
将 CRUSH ruleset 的 type 由 “host” 修改成 “osd”,使得 CRUSH 为 PG 选择 OSD 时再也不局限于不一样的 host。
ceph osd getcrushmap -o crushmap_compiled_file
crushtool -d crushmap_compiled_file -o crushmap_decompiled_file
vi crushmap_decompiled_file
再次健康检查:
ceph-deploy install --rgw ceph_admin
ceph-deploy rgw create ceph_admin
3.一、在ceph.conf中glabal部分以后添加另外一部分
[client.rgw.client-node] rgw_frontends = "civetweb port=80" |
确保在rgw_frontends键/值对的port=<port-number>之间不留空白。
3.二、重起生效
sudo systemctl restart ceph-radosgw@rgw.ceph_admin.service
此处具体名称以具体部署为准。。。
3.四、防火墙打开端口
firewall
sudo firewall-cmd --list-all
sudo firewall-cmd --zone=public --add-port 80/tcp --permanent
sudo firewall-cmd --reload
Iptables
修改配置文件
vi /etc/sysconfig/iptables
添加:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT |
开放80端口
3.五、测试:
在浏览器输入主机IP(若是对象网关单独安装,输入网关节点的IP)
返回:
完成。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
一、建立cephgw存储池
ceph osd pool create .rgw 128 128
ceph osd pool create .rgw.root 128 128
ceph osd pool create .rgw.control 128 128
ceph osd pool create .rgw.gc 128 128
ceph osd pool create .rgw.buckets 128 128
ceph osd pool create .rgw.buckets.index 128 128
ceph osd pool create .rgw.buckets.extra 128 128
ceph osd pool create .log 128 128
ceph osd pool create .intent-log 128 128
ceph osd pool create .usage 128 128
ceph osd pool create .users 128 128
ceph osd pool create .users.email 128 128
ceph osd pool create .users.swift 128 128
ceph osd pool create .users.uid 128 128
二、生成网关秘钥文件 ceph.client.radosgw.keyring
ceph auth get client.rgw.ceph_admin > /etc/ceph/ceph.client.radosgw.keyring
而后修改ceph.conf
在[client.rgw.ceph_admin]部分添加:
host = ceph_admin keyring = /etc/ceph/ceph.client.radosgw.keyring |
而后重启服务
radosgw -c /etc/ceph/ceph.conf -n client.rgw.ceph_admin
sudo systemctl restart ceph-radosgw@rgw.ceph_admin.service
三、生成网关访问用户(s3用户和swift子用户名字保持一致):
s3用户cephtest
radosgw-admin user create --uid="cephtest" --display-name="cephtest"
确保access_key或secret_key中没有转译符号:“\”,有的话从新生成用户。
swift用户
先生成用户:
再生成用户秘钥:
四、访问验证:
4.一、测试s3
须要编写并运行Python测试脚原本验证S3访问。 S3访问测试脚本将链接到radosgw,建立一个新的存储桶并列出全部的存储桶。 aws_access_key_id和aws_secret_access_key的值取自radosgw-admin命令返回的access_key和secret_key的值。
您将须要安装python-boto包:
sudo yum install python-boto
建立Python脚本:
vi s3test.py
import boto.s3.connection access_key = '25EN2DT7NA1K6YXXFYEC' bucket = conn.create_bucket('my-new-bucket') |
记得更改host和port。。。
运行脚本:
python s3test.py
s3测试完成。
4.二、测试swift
安装swift命令行客户端:
sudo yum install python-setuptools
sudo easy_install pip
sudo pip install --upgrade setuptools
sudo pip install --upgrade python-swiftclient
执行测试:
swift -A http://{IP ADDRESS}:{port}/auth/1.0 -U testuser:swift -K '{swift_secret_key}' list
将{IP ADDRESS}替换为网关服务器的公有IP地址,将{swift_secret_key}替换为为swift用户执行的radosgw-admin key create命令输出的值。 将{port}替换为使用Civetweb所使用的端口号(例如,7480是默认值)。 若是不更换端口,则默认为端口80。
返回:
swift测试完成。。。
最后吐槽下,server的中文都成敏感词汇了。。。osc的敏感检索配置要改改。。。