作者:周帆
时间: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
2.3
2.4
2.5
2.6
2.7
2.8
2.9.暂时使用host only或 nat(这样可以使用宿主机的网络上网)
Host-only只能确保虚拟机系统与宿主机之间通信
NAT相当于将宿主机看作是一台路由器
2.10
2.11
2.12
2.13
2.14下一步
注意:这时还没有安装操作系统,等会儿需加载 iso镜像文件
2.15.在虚拟机 –>设置 –>硬件 –>CD/DVD选择使用iso文件,选择你下载好的centos7镜像文件
2.16.设置好后打开虚拟机
选择第一项
开始
2.17进入系统安装界面
选择中文 ,简体 ,继续
点进去 软件安装
配置网络:
Hostname就是虚拟机的主机名称,centos7默认的网络适配器名为en33
其他的选项可以暂时不用管,点击开始安装
设置root密码 与创建普通 用户
创建用户
安装中…
2.18. 安装完毕,重启
遵循centos的许可协议
完成配置:
安装成功!普通用户为 cepher
登录进去
(cepher用户我的密码是123456789)
(root用户我的密码也是123456789)
主界面
一路继续跳过!
3. 开始使用虚拟机
3.1安装vm tools软件
只有在VMware虚拟机中安装好了VMwareTools,才能实现主机与虚拟机之间的文件共享,同时可支持自由拖拽的功能,鼠标也可在虚拟机与主机之间自由移动(不用再按ctrl+alt),且虚拟机屏幕也可实现全屏化。可以自由的在宿主机和虚拟机系统中实现复制和粘贴功能
点击 虚拟机 ->vmtools 安装
桌面上出现 VMwareTools的光驱
双击点开它
打开terminal,切换至home目录下,进入cepher用户主目录,
# cd/home/cepher
# ls–la
看到压缩包
移动 压缩包 到 /tmp 目录下面
#mvVMwareTools-10.0.10-4301679.tar.gz /tmp/
# ls–la
解压压缩包 到 当前目录下
#tar –zxvfVMwareTools-10.0.10-4301679.tar.gz
进去解压后的安装目录
#cdvmware-tools-distrib/
执行安装脚本
#./vmware-install.pl
若出现权限不够 说明 安装时需要root权限
执行命令
# suroot
输入root 密码,切换为root账户后 ,发现
由原来的cepher@ceph-admin 变为了root@ceph-admin
一般格式为:[用户名@主机名 目录名]
再次执行
#./vmware-install.pl
一路回车 和yes or no
安装好后,需要重启
3.2修改网络适配器
参考:http://blog.csdn.net/clevercode/article/details/45935073
搭建ceph集群需要多台虚拟机,同时需要真实物理机和虚拟机之间进行通信
首先排除 host-only
再次考虑 NAT(网络地址转换)这样物理机会通过网络地址与子网掩码的运算找到真实的虚拟机ip地址,这样的问题是物理机可以之间访问虚拟机,而虚拟机不直接访问物理机
所以我们使用 桥接模式 将虚拟机系统的网络桥接到物理机的无限局域内
当前使用的是 chunk-pu2.4G
好处是 虚拟机系统 和物理机 就在一个 局域网内了,可以相互通信
修改虚拟机网卡
查看物理机所有网络配置
#ipconfig/all
找到物理机连接的无限网络及描述
桥接到描述为Broadcom 802.11n网络适配器的网络上(不同机器可能描述不同)
附一张我的网络适配器图
打开虚拟机设置,将ceph-admin网络适配器改为 桥接模式
切换到 root
# cd/etc/sysconfig/network-scripts/
# ls
配置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
重启服务
#systemctl restart network
打开浏览器:访问百度http;//www.baidu.com
Ping 物理机地址192.168.1.12(我的,你的可能不一样)
说明静态ip配置成功
物理机也通了
系统的安装与网络配置就算完成了基础!
搭建多个只需要按照上面的步骤重复即可
注:分配静态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
将163的源贴到CentOS7-Base-163.repo中
#vim/etc/yum.repos.d/CentOS7-Base-163.repo
生成缓存
#yumclean all
#yummakecache
更新源,就是把最新的软件包信息拿下来
#yumupdate
##这个过程比较慢,吃网速
5.
真实网络拓扑图
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
说明gvim安装成功
Gvim是linux下图形界面的文本编辑器
继续运行
#sudogvim /etc/yum.repos.d/ceph.repo
保存并退出
ESC
:wq
或者 ESC shift+ zz
在管理节点上执行:安装ceph-deploy
#sudo yumupdate && sudo yum install ceph-deploy
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
说明刚才创建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
把公钥拷贝到各 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
如果你想重新配置节点,重新安装,就执行
#搽除配置信息
cepy-deploy purgedataadmin
#keyrings失效
Ceph-deployforgetkeys
#连ceph安装包一起删除
Ceph-deploy purge admin
详见 ceph-deploy--help
新建集群后my-cluster文件夹下会有三个文件
把 Ceph 配置文件里的默认副本数从 3 改成 2
# gvimceph.conf
osd pooldefault size = 2
安装 Ceph(下面只是在admin节点安装了ceph)
#ceph-deployinstall admin
例如:ceph-deploy install admin osd1 osd2
配置初始 monitor(s)、并收集所有密钥:
添加两个 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
你将看到
你还可以配置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相关的操作
# 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