分类 默认分类 下的文章

架构逻辑示意图:

实际部署中ceph-deploy 可以和ceph node 在同一个节点。

1570587908894

安装前环境配置

ceph 节点设置

以操作系统centos7.x为例子
  1. # 启用依赖源
  2. sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  1. # 添加ceph源
  2. cat /etc/yum.repos.d/ceph.repo
  3. [ceph-noarch]
  4. name=Ceph noarch packages
  5. baseurl=https://download.ceph.com/rpm-luminous/el7/noarch
  6. enabled=1
  7. gpgcheck=1
  8. type=rpm-md
  9. gpgkey=https://download.ceph.com/keys/release.asc
  10. # 推荐使用国内镜像
  11. [ceph-noarch]
  12. name=Ceph noarch packages
  13. baseurl=http://mirrors.ustc.edu.cn/ceph/rpm-luminous/el7/noarch
  14. enabled=1
  15. gpgcheck=1
  16. type=rpm-md
  17. gpgkey=http://mirrors.ustc.edu.cn/ceph/keys/release.asc
  1. sudo yum makecache

安装NTP

  1. sudo yum install ntp ntpdate ntp-doc -y
  2. # 配置NTP
  3. sudo ntpdate pool.ntp.org
  4. sudo systemctl restart ntpdate
  5. sudo systemctl restart ntpd
  6. sudo systemctl enable ntpd
  7. sudo systemctl enable ntpdate

ssh 服务

  1. sudo yum install openssh-server -y

创建ceph用户

  1. ssh user@ceph-server
  2. sudo useradd -d /home/{username} -m {username}
  3. sudo passwd {username}
  4. # 对于您添加到每个Ceph节点的新用户,请确保该用户具有 sudo特权。
  5. echo "{username} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/{username}
  6. sudo chmod 0440 /etc/sudoers.d/{username}

测试环境直接停掉防火墙

  1. sudo systemctl stop firewalld
  2. sudo systemctl disable firewalld

yum 加速插件

  1. sudo yum install yum-plugin-priorities

修改每个节点的/etc/hosts,如:

  1. 10.201.7.2 node1 # 和hostname一致
  2. 10.201.7.3 node2
  3. 10.201.7.4 node3

ceph-deploy 节点配置

配置部署节点(ceph-deploy)到ceph的节点的免密钥

  1. # 此步骤不要使用sudo 或root 帐号
  2. ssh-keygen
  3. ssh-copy-id {username}@node1
  4. ssh-copy-id {username}@node2
  5. ssh-copy-id {username}@node3

(推荐)配置ssh 默认使用ceph 用户

  1. # Modify the ~/.ssh/config
  2. Host node1
  3. Hostname node1
  4. User {username}
  5. Host node2
  6. Hostname node2
  7. User {username}
  8. Host node3
  9. Hostname node3
  10. User {username}
  1. sudo chmod 600 ~/.ssh/config

安装

每个ceph节点执行

  1. sudo yum install ceph -y

如果需要在某个节点安装对象存储网关,在该节点执行

  1. sudo yum install ceph-radosgw -y

ceph-deploy 节点

  1. sudo yum install ceph-deploy -y
  1. mkdir my-cluster
  2. cd my-cluster
  3. ceph-deploy new node1
  4. # 初始化mon
  5. ceph-deploy mon create-initial
  6. # 传递密钥
  7. ceph-deploy admin node1 node2 node3
  8. # 部署mgr
  9. ceph-deploy mgr create node1
  10. # 部署osd
  11. ceph-deploy osd create --data /dev/vdb node1 # 如果你的虚拟机没有多的磁盘, 需要添加新的磁盘
  12. ceph-deploy osd create --data /dev/vdb node2
  13. ceph-deploy osd create --data /dev/vdb node3
  14. # 部署RGW
  15. ceph-deploy rgw create node1 # 默认端口: 7480

任意ceph节点

  1. # 检查集群健康
  2. sudo ceph -s

  1. import asyncio
  2. import datetime
  3. import websockets
  4. async def producer(ws, path):
  5. while 1:
  6. await asyncio.sleep(1)
  7. now = datetime.datetime.utcnow().isoformat() + "T" + '1'
  8. await ws.send(now)
  9. async def now(ws, path):
  10. while 1:
  11. await asyncio.sleep(3)
  12. now = datetime.datetime.utcnow().isoformat() + "Z" + "3"
  13. await ws.send(now)
  14. async def handler(websocket, path):
  15. # 协程并发执行的例子
  16. await asyncio.gather(now(websocket, path), producer(websocket, path), return_exceptions=True)
  17. start_server = websockets.serve(handler, "127.0.0.1", 5678)
  18. asyncio.get_event_loop().run_until_complete(start_server)
  19. asyncio.get_event_loop().run_forever()

hug 目前提供三种接口:

  • 本地函数调用
  • 命令行 : 基于 标准库Argparse
  • http server 基于: Falcon

字段验证:

  • 采用python3函数参数注释方式验证
  • 一个验证要么验证通过返回验证后的值, 要么抛出异常

路由:

指令:

这个指令有点魔法,可以改变默认参数的值

分开成多个文件

@hug.extend_api('/something')

测试API:

  1. def tests_happy_birthday():
  2. response = hug.test.get(happy_birthday, 'happy_birthday', {'name': 'Timothy', 'age': 25})
  3. assert response.status == HTTP_200
  4. assert response.data is not None