基于Centos7的Ceph环境搭建

交流群:216672921
这是我的一位同事写的环境搭建手册,主要目的是为以后要分享的基于ceph的对象网关存储做准备,接下来的文章里我将分享,基于AmazonS3 以及Swift的ceph对象存储,没有ceph的同学请自行搭建哦. 这篇文章是新浪迁过来的,图片显示异常,双击图片就可以看见,图片太多 我也没精力去一张张粘贴了,多有不便敬请原谅.

Ceph环境搭建手册

作者:周帆

时间:2017-04-11

GitOSChina: https://git.oschina.net/fantazy

Ceph中文doc: http://ceph.org.cn/

论坛:http://bbs.ceph.org.cn/explore/


环境:vmware workstation12 Pro

CentOS7

注:请不要使用低版本的vmware,可能导致centos7安装失败


Centos7镜像下载:

http://mirrors.sohu.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso

4.08GB

 

1. 安装vmwareworkstation

2. 打开 Vmwareworkstation 12 pro

2.1点击新建虚拟机

2.2

基于Centos7的Ceph环境搭建

 

2.3

基于Centos7的Ceph环境搭建 

 

2.4

基于Centos7的Ceph环境搭建 

 

2.5

基于Centos7的Ceph环境搭建 

 

 

2.6

基于Centos7的Ceph环境搭建 

 

基于Centos7的Ceph环境搭建 

 

 

2.7

基于Centos7的Ceph环境搭建 

2.8

基于Centos7的Ceph环境搭建 

2.9.暂时使用host only或 nat(这样可以使用宿主机的网络上网)

 

Host-only只能确保虚拟机系统与宿主机之间通信

NAT相当于将宿主机看作是一台路由器

基于Centos7的Ceph环境搭建 

 

 

2.10

基于Centos7的Ceph环境搭建 

 

2.11

基于Centos7的Ceph环境搭建 

 

2.12

基于Centos7的Ceph环境搭建 

 

2.13

基于Centos7的Ceph环境搭建 

 

 

2.14下一步

基于Centos7的Ceph环境搭建 

 

 

 

注意:这时还没有安装操作系统,等会儿需加载 iso镜像文件

 

2.15.在虚拟机 >设置 >硬件 >CD/DVD选择使用iso文件,选择你下载好的centos7镜像文件

基于Centos7的Ceph环境搭建 

 

2.16.设置好后打开虚拟机

基于Centos7的Ceph环境搭建 

基于Centos7的Ceph环境搭建 

 

选择第一项

 

开始

 

基于Centos7的Ceph环境搭建 

 

 

2.17进入系统安装界面

选择中文 ,简体 ,继续

基于Centos7的Ceph环境搭建 

 

基于Centos7的Ceph环境搭建 

 

点进去 软件安装

 

基于Centos7的Ceph环境搭建 

 

基于Centos7的Ceph环境搭建 

配置网络:

Hostname就是虚拟机的主机名称,centos7默认的网络适配器名为en33

基于Centos7的Ceph环境搭建 

 

其他的选项可以暂时不用管,点击开始安装

基于Centos7的Ceph环境搭建 

 

设置root密码 与创建普通 用户

基于Centos7的Ceph环境搭建 

创建用户

基于Centos7的Ceph环境搭建 

 

安装中

基于Centos7的Ceph环境搭建 

 

 

基于Centos7的Ceph环境搭建 

 

 

2.18. 安装完毕,重启

基于Centos7的Ceph环境搭建 

 

基于Centos7的Ceph环境搭建 

 

遵循centos的许可协议

基于Centos7的Ceph环境搭建 

完成配置:

基于Centos7的Ceph环境搭建 

 

 

安装成功!普通用户为 cepher

基于Centos7的Ceph环境搭建 

 

登录进去

cepher用户我的密码是123456789

root用户我的密码也是123456789

 

 

主界面

基于Centos7的Ceph环境搭建 

一路继续跳过!

3. 开始使用虚拟机

3.1安装vm tools软件

只有在VMware虚拟机中安装好了VMwareTools,才能实现主机与虚拟机之间的文件共享,同时可支持自由拖拽的功能,鼠标也可在虚拟机与主机之间自由移动(不用再按ctrl+alt),且虚拟机屏幕也可实现全屏化。可以自由的在宿主机和虚拟机系统中实现复制和粘贴功能

 

点击 虚拟机 ->vmtools 安装

基于Centos7的Ceph环境搭建 

 

桌面上出现 VMwareTools的光驱

双击点开它

 

基于Centos7的Ceph环境搭建 

 

 

 

打开terminal,切换至home目录下,进入cepher用户主目录,

 

 # cd/home/cepher

 # ls–la

看到压缩包

基于Centos7的Ceph环境搭建 

移动 压缩包  /tmp 目录下面

#mvVMwareTools-10.0.10-4301679.tar.gz /tmp/

# ls–la

基于Centos7的Ceph环境搭建 

 

 

解压压缩包  当前目录下

#tar –zxvfVMwareTools-10.0.10-4301679.tar.gz

 

进去解压后的安装目录

#cdvmware-tools-distrib/

 

执行安装脚本

#./vmware-install.pl

 

基于Centos7的Ceph环境搭建 

若出现权限不够 说明 安装时需要root权限

执行命令

# suroot

输入root 密码,切换为root账户后 ,发现

由原来的cepher@ceph-admin 变为了root@ceph-admin

一般格式为:[用户名@主机名 目录名]

基于Centos7的Ceph环境搭建 

 

 

再次执

#./vmware-install.pl

一路回车 yes or no

 

基于Centos7的Ceph环境搭建 

 

基于Centos7的Ceph环境搭建 

 

安装好后,需要重启

 

3.2修改网络适配器

参考:http://blog.csdn.net/clevercode/article/details/45935073

搭建ceph集群需要多台虚拟机,同时需要真实物理机和虚拟机之间进行通信

 

首先排除 host-only

 

再次考虑 NAT(网络地址转换)这样物理机会通过网络地址与子网掩码的运算找到真实的虚拟机ip地址,这样的问题是物理机可以之间访问虚拟机,而虚拟机不直接访问物理机

 

基于Centos7的Ceph环境搭建 

 

所以我们使用 桥接模式 将虚拟机系统的网络桥接到物理机的无限局域内

当前使用的是 chunk-pu2.4G

好处是 虚拟机系统 和物理机 就在一个 局域网内了,可以相互通信

 

基于Centos7的Ceph环境搭建 

 

修改虚拟机网卡

基于Centos7的Ceph环境搭建 

 

基于Centos7的Ceph环境搭建 

 

查看物理机所有网络配置

#ipconfig/all

 

基于Centos7的Ceph环境搭建 

 

找到物理机连接的无限网络及描述

基于Centos7的Ceph环境搭建 

 

桥接到描述为Broadcom 802.11n网络适配器的网络上(不同机器可能描述不同)

 

附一张我的网络适配器图

基于Centos7的Ceph环境搭建 

 

打开虚拟机设置,将ceph-admin网络适配器改为 桥接模式

基于Centos7的Ceph环境搭建 

 

切换到 root

# cd/etc/sysconfig/network-scripts/

# ls

基于Centos7的Ceph环境搭建 

 

配置ifcfg-ens33网卡(注:centos7 网卡默认  ens33 6.x为 ens0)

使用静态 ip,不要 动态ip分配 

#vimifcfg-ens33

 

BOOTPROTO=dhcp改为static

 

ONBOOT=no改为 yes(开机自动连接网络)

 

参考:

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_PEERDNS=yes

IPV6_PEERROUTES=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens33

UUID=76761aa8-375f-440e-ad62-8eb6845ff2cb

DEVICE=ens33

ONBOOT=yes

GATEWAY=192.168.1.1

DNS1=114.114.114.114

NETMASK=255.255.255.0

#ip地址

IPADDR=192.168.1.244

#子网掩码,和物理机保持一致

NETMASK=255.255.255.0

#默认网关,和物理机保持一致

GATEWAY=192.168.1.1

 

查看是否修改成功

#catifcfg-ens33

 基于Centos7的Ceph环境搭建


基于Centos7的Ceph环境搭建

 

 

重启服务

#systemctl restart network

打开浏览器:访问百度http;//www.baidu.com

基于Centos7的Ceph环境搭建 

 

Ping 物理机地址192.168.1.12(我的,你的可能不一样)

基于Centos7的Ceph环境搭建 

 

说明静态ip配置成功

物理机也通了

基于Centos7的Ceph环境搭建 

 

系统的安装与网络配置就算完成了基础!

搭建多个只需要按照上面的步骤重复即可

注:分配静态ip时不要重复,否则两台机器ip冲突不能同时上网

 

4. centos的源进行调整。

 

Linux系统安装软件的方式一般为:源码安装,二进制安装,以及包管理工具安装

Debian系列为apt-get

Redhat系列一般为rpm和yum

Centos操作系统使用的是 rpm和yum

 

包管理工具 keyi方便的安装软件

 

EG:安装mysql.

 # sudo yuminstall –y mysql

 

由于centos 的yum 源服务器在国外,我们将源修改到国内的163源

http://mirrors.163.com/.help/centos.html

 

#CentOS-Base.repo

#

# Themirror system uses the connecting IP address of the client andthe

# updatestatus of each mirror to pick mirrors that are updated toand

#geographically close to the client.  You shoulduse this for CentOS updates

# unlessyou are manually picking other mirrors.

#

# If themirrorlist= does not work for you, as a fall back you can trythe

#remarked out baseurl= line instead.

#

#

[base]

name=CentOS-$releasever- Base - 163.com

#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os

baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/

gpgcheck=1

gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

 

#releasedupdates

[updates]

name=CentOS-$releasever- Updates - 163.com

#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates

baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/

gpgcheck=1

gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

 

#additionalpackages that may be useful

[extras]

name=CentOS-$releasever- Extras - 163.com

#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras

baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/

gpgcheck=1

gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

 

#additionalpackages that extend functionality of existingpackages

[centosplus]

name=CentOS-$releasever- Plus - 163.com

baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/

gpgcheck=1

enabled=0

gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

 

 

先备份CentOS-Base.repo文件

#mv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backup

 

再创建CentOS7-Base-163.repo文件

#touch/etc/yum.repos.d/CentOS7-Base-163.repo

#cd/etc/yum.repos.d/

#ls

基于Centos7的Ceph环境搭建 

 

163的源贴到CentOS7-Base-163.repo中

#vim/etc/yum.repos.d/CentOS7-Base-163.repo

 

 

生成缓存

#yumclean all

#yummakecache

 

更新源,就是把最新的软件包信息拿下来

#yumupdate

##这个过程比较慢,吃网速

基于Centos7的Ceph环境搭建 

 

 

 

 

5.

真实网络拓扑图

基于Centos7的Ceph环境搭建 

 

ip

Hostname

备注

192.168.1.245

ceph-admin

管理节点,mon节点

192.168.1.246

gateway

网关对象节点

192.168.1.247

ceph-osd1

Osd1节点

192.168.248

ceph-osd2

Osd2节点

 

 

 

 

 

 

下面你可开始你的ceph集群搭建了!可以先参考注意事项

 

Ceph中文社区

http://www.ceph.org.cn/


搭建文档

 

先把网络配置好,yum源该成163的更新后再执行后面的操作!

如果一个人物理机由于性能问题无法同时开四个系统,那就最好找个partner一起搭建,切记,你们的物理机要在同一个局域网内!!

 

 

 

CEPH集群搭建

约定:4个节点的用户名统一为cepher(看个人)

密码为:123456789

root密码也为123456789

 

 

1.修改hostname:

#hostnamectlset-hostname xxx

#EG:将主机名改为ceph-admin

# hostnamectlset-hostname ceph-admin

 

2.创建用户:sudo表示临时获取root的权限,用户的主目录是/home/cepher,用户名为cepher

#sudo adduser -d/home/cepher -m cepher

(如果你在装系统时已经创建那就不需进行此步骤)

3.设置用户密码:

#sudo passwdcepher

4.设置账户权限

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

(如果说cepher还没有权限,那就切换到root身份进行操作)

#sudo chmod 0440/etc/sudoers.d/cepher

(chomod 改变文件权限)

 

完成后,切换回cepher用户执行下列命令:

#sudo yuminstall -y yum-utils && sudo yum-config-manager --add-repohttps://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yuminstall --nogpgcheck -y epel-release && sudo rpm --import/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm/etc/yum.repos.d/dl.fedoraproject.org*

添加ceph仓库信息

#sudo vim/etc/yum.repos.d/ceph.repo

将以下写入ceph.repo中(ceph 版本为 jewel)

[Ceph]

name=Cephpackages for $basearch

baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/$basearch

enabled=1

gpgcheck=0

type=rpm-md

gpgkey=https://mirrors.163.com/ceph/keys/release.asc

priority=1

 

[Ceph-noarch]

name=Cephnoarch packages

baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/noarch

enabled=1

gpgcheck=0

type=rpm-md

gpgkey=https://mirrors.163.com/ceph/keys/release.asc

priority=1

 

[ceph-source]

name=Cephsource packages

baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/SRPMS

enabled=1

gpgcheck=0

type=rpm-md

gpgkey=https://mirrors.163.com/ceph/keys/release.asc

priority=1

 

如果你不喜欢vim,或者习惯图形化的文本编辑

那就执行

#sudo yuminstall gvim –y


基于Centos7的Ceph环境搭建 

说明gvim安装成功

 

Gvim是linux下图形界面的文本编辑器

继续运行

#sudogvim /etc/yum.repos.d/ceph.repo


保存并退出

ESC

:wq

或者 ESC shift+ zz

 

 

在管理节点上执行:安装ceph-deploy

#sudo yumupdate && sudo yum install ceph-deploy

基于Centos7的Ceph环境搭建 

 1

在所有 Ceph 节点上安装 NTP 服务

#sudo yuminstall ntp ntpdate ntp-doc

在各 Ceph 节点安装 SSH 服务器

#sudo yuminstall openssh-server

#你的管理节点必须能够通过 SSH无密码地访问各 Ceph 节点。如果 ceph-deploy 以某个普通用户登录,那么这个用户必须有无密码使用 sudo 的权限!

 


 

将各个节点的主机名  ip地址添加到 /etc/hosts文件中

 

#sudo gvim/etc/hosts

添加以下内容:

192.168.1.245admin

192.168.1.246gateway

192.168.1.247osd1

192.168.1.248osd2

 

 

停用防火墙


#sudosystemctl disable firewalld

# sudosystemctl stop firewalld

 

 

禁用SElinux

#sudo sed-i s'/SELINUX=enforcing/SELINUX=disabled'/g/etc/sysconfig/selinux

admin机器上生成ssh key:不需要输入任何东西,一路回车

#ssh-keygen

 

 

cepher用户主目录下执行

#ls–la

 基于Centos7的Ceph环境搭建 

说明刚才创建ssh公钥和私钥成功了

 ~.ssh/文件夹下创建config文件,并将以下信息写入

Host192.168.1.245

Hostnameadmin

Usercepher

 

Host192.168.1.246

Hostnamegateway

Usercepher

 

Host192.168.1.247

Hostnameosd1

Usercepher

 

Host192.168.1.248

Hostnameosd2

Usercepher基于Centos7的Ceph环境搭建

 

把公钥拷贝到各 Ceph 节点

ssh-copy-idcepher@admin

ssh-copy-idcepher@gateway

ssh-copy-idcepher@osd1

ssh-copy-idcepher@osd2

每个节点的cepher用户的~.ssh/会多出authorized_keys文件

每个节点authorized_key的都是 admin 节点cepher用户的公钥(自己看)

 

安装#sudo yuminstall yum-plugin-priorities

 

admin节点上 cepher用户主目录下创建文件夹

#mkdirmy-cluster

#cdmy-cluster

创建集群

创建集群ceph-deploynew {initial-monitor-node(s)}

1. 这里 mon节点就是admin节点

#ceph-deploynew admin

基于Centos7的Ceph环境搭建 

 

如果你想重新配置节点,重新安装,就执行

#搽除配置信息

cepy-deploy purgedataadmin

 

#keyrings失效

Ceph-deployforgetkeys

 

#连ceph安装包一起删除

Ceph-deploy purge admin

 

详见 ceph-deploy--help

 

新建集群后my-cluster文件夹下会有三个文件

基于Centos7的Ceph环境搭建 

 

 Ceph 配置文件里的默认副本数从 3 改成 2 

# gvimceph.conf

osd pooldefault size = 2

基于Centos7的Ceph环境搭建 

 

安装 Ceph(下面只是在admin节点安装了ceph)

#ceph-deployinstall admin

基于Centos7的Ceph环境搭建 

例如:ceph-deploy install admin osd1 osd2

 

配置初始 monitor(s)、并收集所有密钥:

 

基于Centos7的Ceph环境搭建 

基于Centos7的Ceph环境搭建 

 

 

添加两个 OSD

osd1和 osd2两个节点分别执行:

#sudomkdir /var/local/storage1

#sudochmod 777 /var/local/storage1

#sudomkdir /var/local/storage2

#sudochmod 777 /var/local/storage2

然后在admin节点执行(从管理节点执行 ceph-deploy 来准备 OSD):

 

#ceph-deployosd prepare osd1:/var/local/storage1osd2:/var/local/storage2

激活osd1 和 osd2

#ceph-deployosd activate osd1:/var/local/storage1osd2:/var/local/storage1

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

ceph-deployadmin admin osd1 osd2

确保你对 ceph.client.admin.keyring 有正确的操作权限

 

#sudochmod +r /etc/ceph/ceph.client.admin.keyring

添加 RGW 例程

 

要使用 Ceph 的 Ceph对象网关组件,必须部署 RGW 例程

,在gateway节点上安装radosgw

#ceph-deployinstall –rgw gateway

#ceph-deploy admin gateway

# ceph-deployrgw create gateway

从管理节点的工作目录,在 client-node 上新建一个 Ceph对象网关实例

剩下的内容,请参考:

http://docs.ceph.org.cn/start/quick-rgw/

 

 

如果你的radosgw安装好并且创建了网关实例,并且服务已启动。

那么你打开浏览器,输入http://gateway:7480

你将看到

基于Centos7的Ceph环境搭建 

你还可以配置gateway节点的ceph.conf文件,加入:

[client.rgw.gateway]

rgw_frontends= civetweb

port=80

rgw_content_length_compat= true

 

那么,端口就被改为80了civetweb代替了apache作为cephrgw服务前端

 

 

 

………..

修改配置后,重启网关服务

#sudosystemctl restart ceph-radosgw.service

 

Ceph对象网关搭建完毕后,你就需要简单配置

http://docs.ceph.org.cn/radosgw/config/

 

然后创建用户

 

User相关的操作

基于Centos7的Ceph环境搭建 

 

sudoradosgw-admin user create --uid="testuser" --display-name="FirstUser"

{

    "user_id":"testuser",

    "display_name":"First User",

    "email":"",

    "suspended":0,

    "max_buckets":1000,

    "auid":0,

    "subusers":[],

    "keys":[

        {

            "user":"testuser",

            "access_key":" 96L66FDJ63590GTHF62Y",

            "secret_key":" F1EKe6wZUY1WVFvZhEgPho6WUgDBXTS8rxbBqt5o"

        }

    ],

    "swift_keys":[],

    "caps":[],

    "op_mask":"read, write, delete",

    "default_placement":"",

    "placement_tags":[],

    "bucket_quota":{

        "enabled":false,

        "max_size_kb":-1,

        "max_objects":-1

    },

    "user_quota":{

        "enabled":false,

        "max_size_kb":-1,

        "max_objects":-1

    },

    "temp_url_keys":[]

}

切记要记住user的accessKey secretKey,等会儿Amazon S3连接的时候需要认证

 

…..

 

Amazon的 S3提供了丰富的对象操作api,下面以Java为例(我是Java系程序员)

 

 

开发环境:jdk1.8 idea64 maven3

 

直接上依赖

 

http://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk

你可能感兴趣的:(Java,分布式,linux,操作系统)