1.osd1 192.168.1.2
2.osd2 192.168.1.3
3.monitor + radosgw 192.168.1.4
4.admin 192.168.1.5
0.所有机器初始化完毕,更改hostname,ntp校验时间,关闭selinux,关闭防火墙
1.所有机器创建普通用户 ceph_deploy (ceph新版必须使用普通用户启动)并确保所有机器的新建用户都有sudo权限
useradd ceph_deploy
echo "{username} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/{username}
sudo chmod 0440 /etc/sudoers.d/{username}
2.所有机器hosts解析相互添加上
vim /etc/hosts
osd1 192.168.1.2
osd2 192.168.1.3
monitor 192.168.1.4
admin 192.168.1.5
3.所有机器ceph_deploy用户秘钥相互免密
ssh-keygen && ssh-copy-id ceph_deploy@{hostname}
4.admin机器 下载安装ceph-deploy程序
sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
cat >/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
sudo yum update
sudo yum install ceph-deploy
5.修改admin节点上的 ~/.ssh/config 文件,这样 ceph-deploy 就能用你所建的用户名登录其他 节点,而无需每次执行 ceph-deploy 都要指定 –username {username} 。
Host node1
Hostname node1
User {username}
Host node2
Hostname node2
User {username}
Host node3
Hostname node3
User {username}
在admin节点上创建一个目录作为管理目录
mkdir ceph
创建集群
ceph-deploy new monitor
完成后会在当前路径下应该有一个 Ceph 配置文件、一个 monitor 密钥环和一个日志文件。
更改ceph.conf
vim ceph.conf
osd pool default size = 2
如果你有多个网卡,可以把 public network 写入 Ceph 配置文件的 [global] 段下。详情见网络配置参考。
public network = {ip-address}/{netmask}
安装 Ceph
ceph-deploy install osd1 osd2 monitor admin
到各个node去执行ceph –version 检查ceph安装结果
ceph --version
配置初始 monitor(s)、并收集所有密钥:
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 节点
给osd1,osd2 分别添加一块硬盘,创建分区/dev/sdb1,格式化为xfs 文件系统
添加osd 节点
ceph-deploy osd prepare osd1:/dev/sdb1 osd2:/dev/sdb1
激活osd 节点
ceph-deploy osd activate osd1:/dev/sdb1 osd2:/dev/sdb1
查看/dev/sdb1 分区是否挂载成功
分别在两个osd 节点中,把/dev/sdb1分区加入到/etc/fstab 中开机自动挂载
安装rgw
ceph-deploy install --rgw monitor
ceph-deploy rgw create monitor
在monitor 节点ceph.conf追加如下配置
vim /etc/ceph/ceph.conf
[client.rgw.client-node]
rgw_dns_name = ceph.closeli.cn 请填写主域名,解析时采用泛解析
rgw_frontends = "civetweb port=80"
生成一个 Ceph 对象网关用户名和key
sudo ceph auth get-or-create client.radosgw.gateway osd 'allow rwx' mon 'allow rwx' -o /etc/ceph/ceph.client.radosgw.keyring
为 S3 访问新建一个 RADOSGW 用户
sudo radosgw-admin user create --uid="testuser" --display-name="First User"
python 测试代码:
import boto.s3.connection
access_key = '1GB703PJH538VUE6H1AS'
secret_key = '2mAsFWEuVFV5ixqkOZ3XAtZvjpC7UbT7gtxChaCU'
conn = boto.connect_s3(
aws_access_key_id = access_key,
aws_secret_access_key = secret_key,
host = 'ceph.closeli.cn',
is_secure=False,
calling_format = boto.s3.connection.OrdinaryCallingFormat(),
)
conn.create_bucket('my-new-bucket') #创建bucket
for bucket in conn.get_all_buckets(): #显示该用户下所有bucket
print(f"{ bucket.name}\t{bucket.creation_date}")
a=conn.get_bucket('my-new-bucket') 获取指定bucket
key = a.new_key('hello.txt') #创建一个文件
key.set_contents_from_string('Hello World!') #写入一个文件
for key in a: #获取文件内容
print(f"{key.name}\t{key.size}\t{key.last_modified}")
key = a.get_key('hello.txt') #获取文件并下载
key.get_contents_to_filename('/Users/yeshaobin/Downloads/hello.txt')
key.generate_url(3600, query_auth=True, force_http=True) #获取文件url下载地址
print(plans_url)