配置IP

  1. [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
  2. TYPE=Ethernet
  3. PROXY_METHOD=none
  4. BROWSER_ONLY=no
  5. ----
  6. BOOTPROTO=static
  7. ----
  8. DEFROUTE=yes
  9. IPV4_FAILURE_FATAL=no
  10. IPV6INIT=yes
  11. IPV6_AUTOCONF=yes
  12. IPV6_DEFROUTE=yes
  13. IPV6_FAILURE_FATAL=no
  14. IPV6_ADDR_GEN_MODE=stable-privacy
  15. NAME=ens33
  16. UUID=5b0d1aff-6182-482a-8701-41a6dd29183a
  17. DEVICE=ens33
  18. ---
  19. ONBOOT=yes
  20. IPADDR=192.168.0.61
  21. GATEWAY=192.168.0.1
  22. ---
  1. 主机名 公网IP 集群IP
  2. centos01 192.168.0.61 192.168.1.61 s1
  3. centos02 192.168.0.62 192.168.1.62 s2
  4. centos03 192.168.0.63 192.168.1.63 s3
  1. 防火墙
  2. systemctl stop firewalld
  3. systemctl disable firewalld

修改主机名

  1. [root@localhost ~]# cat /etc/hostname
  2. s1

DNS设置上网

  1. [root@sa0 ~]# cat /etc/resolv.conf
  2. nameserver 114.114.114.114

DNS映射

  1. [root@s1 ~]# cat /etc/hosts
  2. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  3. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  4. 192.168.0.61 s1
  5. 192.168.0.62 s2
  6. 192.168.0.63 s3

更换阿里云

  1. # yum install -y wget
  2. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  3. #或者
  4. curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  5. #清除缓存
  6. yum clean all
  7. #生成缓存
  8. yum makecache

时间同步

  1. # yum install ntp -y
  2. ---
  3. 批量安装ntp
  4. for i in `seq 1 3`; do ssh z${i} 'yum install ntp -y';done
  5. ---
  6. # vim /etc/ntp.conf
  7. ---
  8. # 允许内网其他机器同步时间
  9. restrict 10.142.0.0 mask 255.255.0.0 nomodify notrap
  10. server 10.142.246.2
  11. # 外部时间服务器不可用时,以本地时间作为时间服务
  12. server 127.127.1.0 # local clock
  13. fudge 127.127.1.0 stratum 10
  14. ---
  15. # systemctl restart ntpd.service
  16. # ntpstat
  17. # ntpq -p
  18. # 把配置文件分发到其他几个节点
  19. # systemctl restart ntpd.service

ssh免密码登陆

  1. # ssh-keygen
  2. # ssh-copy-id root@s1
  3. # ssh-copy-id root@s2
  4. # ssh-copy-id root@s3
  5. 批量免秘钥登录
  6. for i in `seq 1 3`; do ssh-copy-id root@z${i};done

关闭selinux

  1. # sed -i 's/enforcing/disabled/g' /etc/selinux/config
  2. 批量关闭selinux
  3. for i in `seq 1 3`; do ssh z${i} 'sed -i 's/enforcing/disabled/g' /etc/selinux/config';done

设置国内yum源

  1. # cat /etc/yum.repos.d/ceph.repo
  2. [Ceph]
  3. name=Ceph packages for $basearch
  4. baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/$basearch
  5. enabled=1
  6. gpgcheck=0
  7. type=rpm-md
  8. gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
  9. priority=1
  10. [Ceph-noarch]
  11. name=Ceph noarch packages
  12. baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch
  13. enabled=1
  14. gpgcheck=0
  15. type=rpm-md
  16. gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
  17. priority=1
  18. [ceph-source]
  19. name=Ceph source packages
  20. baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS
  21. enabled=1
  22. gpgcheck=0
  23. type=rpm-md
  24. gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
  25. priority=1

创建ceph用户

  1. 分别这三个节点上存储创建用户且赋予它root权限(本人这里用 ytcwd
  2. 执行
  3. # sudo useradd -d /home/ceph -m ceph
  4. # sudo passwd ceph( 输入密码这里建议三台服务器密码设为一致)
  5. //授予无密码sudo权限
  6. #echo "ceph ALL = (root) NOPASSWD:ALL" >> /etc/sudoers.d/ceph
  7. #sudo chmod 0440 /etc/sudoers.d/ceph

安装ceph-deploy

  1. # yum install ceph-deploy
  2. # ceph-deploy --version
  3. # ceph -v

创建部署目录并部署集群

  1. # mkdir cluster
  2. # cd cluster
  3. # ceph-deploy new s1 s2 s3 #创建集群
  4. # vi ceph.conf
  5. osd pool default size = 2
  6. # 如果有多块网卡,可以配置数据交互使用万兆网卡,测试暂时不具备 相应条件
  7. # mon_clock_drift_allowed=5 # 单位是ms
  8. # osd_pool_default_crush_rule=0
  9. # osd_crush_chooseleaf_type=1
  10. # public network=192.168.0.0/24 # 公网IP地址
  11. # cluster network=192.168.1.0/24 # 内网IP地址
  12. #rgw_override_bucket_index_max_shards = 100

安装ceph

  1. # ceph-deploy install s1 s2 s3

部署mon服务

  1. ceph-deploy mon create s1 s2 s3
  2. ceph-deploy mon create-initial

增加OSD

  1. 每个节点
  2. # mkdir -p /data/ceph
  3. # chown -R ceph:ceph /data/ceph
  4. # 准备
  5. # ceph-deploy osd prepare s1:/data/ceph s2:/data/ceph s3:/data/ceph
  6. #激活
  7. # # ceph-deploy osd activate s1:/data/ceph s2:/data/ceph s3:/data/ceph

新增osd

  1. 1.
  2. ceph-deploy osd prepare s1:sdb:sdc
  3. 2.
  4. ceph-deploy osd activate s1:/dev/sdb1:/dev/sdc1

拷贝密钥

  1. # 用 ceph-deploy 把配置文件和 admin 密钥拷贝到管理节点和 Ceph 节点,这样你每次执行 Ceph 命令行时就无需指定 monitor 地址和 ceph.client.admin.keyring 了
  2. # ceph-deploy admin s1 s2 s3
  3. # chmod +r /etc/ceph/ceph.client.admin.keyring
  4. #确保你对 ceph.client.admin.keyring 有正确的操作权限

检查集群状态

  1. ceph health
  2. ceph -s

配置双网卡

  1. [root@s1 ceph]# cat ceph.conf
  2. [global]
  3. fsid = e94bc890-61c6-4a27-8cf4-84b648447d41
  4. mon_initial_members = s1, s2, s3
  5. mon_host = 192.168.0.61,192.168.0.62,192.168.0.63
  6. auth_cluster_required = cephx
  7. auth_service_required = cephx
  8. auth_client_required = cephx
  9. mon_clock_drift_allowed = 2
  10. osd pool default size = 2
  11. --
  12. public network = 192.168.0.0/24
  13. cluster network = 192.168.1.0/24
  14. -- osd.0
  15. # 同步其他节点的配置
  16. # ceph-deploy --overwrite-conf config push s2
  17. # ceph-deploy --overwrite-conf config push s3
  18. #重启osd,mon
  19. #systemctl restart ceph-osd@*
  20. #systemctl restart ceph-mon@*

创建对象网关

  1. 安装rgw软件包
  2. # ceph-deploy install --rgw s1 s2 s3
  3. 安装rgw 实例
  4. # ceph-deploy --overwrite rgw create s1 s2 s3

配置各节点网关

  1. c4执行:ceph auth get client.rgw.c4 > /etc/ceph/ceph.client.radosgw.keyring
  2. c5执行:ceph auth get client.rgw.c5 > /etc/ceph/ceph.client.radosgw.keyring
  3. c6执行:ceph auth get client.rgw.c6 > /etc/ceph/ceph.client.radosgw.keyring
  4. for i in `seq 1 3`; do ssh z${i} 'ceph auth get client.rgw.z${i} > /etc/ceph/ceph.client.radosgw.keyring'; done

创建用户

  1. [root@s1 ceph]# radosgw-admin user create --uid="admin" --display-name="admin"
  2. {
  3. "user_id": "admin",
  4. "display_name": "admin",
  5. "email": "",
  6. "suspended": 0,
  7. "max_buckets": 1000,
  8. "auid": 0,
  9. "subusers": [],
  10. "keys": [
  11. {
  12. "user": "admin",
  13. "access_key": "VOZFOOA73B7JP31PZHE0",
  14. "secret_key": "gdiCnlVmgBY4ja4aDB3HOGqSUL4VMNlOlnfuaEj9"
  15. }
  16. ],
  17. "swift_keys": [],
  18. "caps": [],
  19. "op_mask": "read, write, delete",
  20. "default_placement": "",
  21. "placement_tags": [],
  22. "bucket_quota": {
  23. "enabled": false,
  24. "max_size_kb": -1,
  25. "max_objects": -1
  26. },
  27. "user_quota": {
  28. "enabled": false,
  29. "max_size_kb": -1,
  30. "max_objects": -1
  31. },
  32. "temp_url_keys": []
  33. }

如果配置错误了,清空数据重新开始

标题

  1. #ceph-deploy purge c4 c5 c6
  2. #ceph-deploy purgedata c4 c5 c6
  3. #ceph-deploy forgetkeys
  4. 全部重做:
  5. rm -rf /etc/ceph/*
  6. rm -rf /var/lib/ceph/*/*
  7. rm -rf /var/log/ceph/*
  8. rm -rf /var/run/ceph/*

对bucket分片

  1. radosgw-admin bucket reshard add --bucket=qxfile --num-shards=100

配置pg的数量检查rbd这个pool里已存在的PG和PGP数量

  1. ceph osd pool get default.rgw.buckets.data pg_num
  2. ceph osd pool get default.rgw.buckets.data pgp_num
  3. ceph osd pool set default.rgw.buckets.data pg_num 32
  4. ceph osd pool set default.rgw.buckets.data pgp_num 32

客户端对接

S3cmd客户端

步骤1:安装s3cmd

[root@node1 ~]# yum -y install s3cmd

步骤2:配置s3cmd

[root@node1 ~]# s3cmd —configure

附录:

测试块读写速度

1.测试Linux磁盘读写速度

  1. # 测试写速度
  2. [root@s1 cluster]# time dd if=/dev/zero of=/test.dbf bs=8k count=300000
  3. 记录了300000+0 的读入
  4. 记录了300000+0 的写出
  5. 2457600000字节(2.5 GB)已复制,9.57264 秒,257 MB/秒
  6. real 0m9.585s
  7. user 0m0.188s
  8. sys 0m9.060s
  9. # 测试读速度
  10. [root@s1 cluster]# time dd if=/test.dbf of=/dev/null bs=8k count=300000
  11. 记录了300000+0 的读入
  12. 记录了300000+0 的写出
  13. 2457600000字节(2.5 GB)已复制,4.20992 秒,584 MB/秒
  14. real 0m4.218s
  15. user 0m0.185s
  16. sys 0m4.012s

2.测试挂载的/data数据盘读写速度

  1. # 测试写速度
  2. [root@s1 cluster]# time dd if=/dev/zero of=/data/test.dbf bs=8k count=300000
  3. 记录了300000+0 的读入
  4. 记录了300000+0 的写出
  5. 2457600000字节(2.5 GB)已复制,5.3515 秒,459 MB/秒
  6. real 0m5.359s
  7. user 0m0.236s
  8. sys 0m4.950s
  9. # 测试读速度
  10. [root@s1 cluster]# time dd if=/data/test.dbf of=/dev/null bs=8k count=300000
  11. 记录了300000+0 的读入
  12. 记录了300000+0 的写出
  13. 2457600000字节(2.5 GB)已复制,4.00616 秒,613 MB/秒
  14. real 0m4.013s
  15. user 0m0.116s
  16. sys 0m3.880s

关闭所有的debug信息

问题1

  1. 出现时钟偏差
  2. Ceph 时钟偏移问题 clock skew detected 解决方案--- 部署内网NTP服务
  3. Monitor clock skew detected

问题2

  1. 出现ERROR错误
  2. health HEALTH_ERR
  3. 64 pgs are stuck inactive for more than 300 seconds