Page tree
Skip to end of metadata
Go to start of metadata

部署Ceph监控器

Ceph Monitor维护着展示集群状态的各种图表,容器化部署:

docker run --detach \
           --net=host \
           --volume /etc/timezone:/etc/timezone \
           --volume /etc/localtime:/etc/localtime \
           --volume /var/ceph/conf:/etc/ceph \
           --volume /var/ceph/lib:/var/lib/ceph \
           --publish 6789:6789 \
           --env MON_IP=172.22.66.195 \
           --env CEPH_PUBLIC_NETWORK=172.22.66.0/24 \
           --name=ceph-mon \
           --hostname=ceph-mon \
           --restart=always \
           ceph/daemon:latest-octopus mon

配置Ceph监控器:

docker exec -it ceph-mon ceph config set mon auth_allow_insecure_global_id_reclaim false
docker exec -it ceph-mon ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring

查看Ceph监控器版本:

docker exec -it ceph-mon ceph -v

查看Ceph集群状态:

docker exec -it ceph-mon ceph -s

部署对象存储设备

Ceph OSD为对象存储守护进程,提供实际的存储,本文部署4个OSD。

使用sdb创建OSD

初始化存储卷:

docker run --rm \
           --privileged \
           --net=host \
           --ipc=host \
           --volume /run/lock/lvm:/run/lock/lvm \
           --volume /var/run/udev/:/var/run/udev/ \
           --volume /dev:/dev \
           --volume /var/ceph/conf:/etc/ceph \
           --volume /run/lvm/:/run/lvm/ \
           --volume /var/ceph/lib/:/var/lib/ceph/ \
           --volume /var/ceph/log/:/var/log/ceph/ \
           --entrypoint=ceph-volume \
           ceph/daemon:latest-octopus --cluster ceph lvm prepare --bluestore --data /dev/sdb

创建OSD:

docker run --detach \
           --privileged \
           --net=host \
           --pid=host \
           --ipc=host \
           --volume /etc/timezone:/etc/timezone \
           --volume /etc/localtime:/etc/localtime \
           --volume /dev:/dev \
           --volume /etc/localtime:/etc/localtime \
           --volume /var/ceph/lib:/var/lib/ceph \
           --volume /var/ceph/conf:/etc/ceph \
           --volume /var/ceph/run:/var/run/ceph \
           --volume /var/run/udev/:/var/run/udev/ \
           --volume /var/ceph/log:/var/log/ceph \
           --volume /run/lvm/:/run/lvm/ \
           --env CLUSTER=ceph \
           --env CEPH_DAEMON=OSD_CEPH_VOLUME_ACTIVATE \
           --env CONTAINER_IMAGE=ceph/daemon:latest-octopus \
           --env OSD_ID=0 \
           --name=ceph-osd-0 \
           --hostname=ceph-osd-0 \
           --restart=always \
           docker.io/ceph/daemon:latest-octopus

查看OSD部署状态:

docker exec -it ceph-osd-0 df | grep "osd"

使用sdc创建OSD

初始化存储卷:

docker run --rm \
           --privileged \
           --net=host \
           --ipc=host \
           --volume /run/lock/lvm:/run/lock/lvm \
           --volume /var/run/udev/:/var/run/udev/ \
           --volume /dev:/dev \
           --volume /var/ceph/conf:/etc/ceph \
           --volume /run/lvm/:/run/lvm/ \
           --volume /var/ceph/lib/:/var/lib/ceph/ \
           --volume /var/ceph/log/:/var/log/ceph/ \
           --entrypoint=ceph-volume \
           ceph/daemon:latest-octopus --cluster ceph lvm prepare --bluestore --data /dev/sdc

创建OSD:

docker run --detach \
           --privileged \
           --net=host \
           --pid=host \
           --ipc=host \
           --volume /etc/timezone:/etc/timezone \
           --volume /etc/localtime:/etc/localtime \
           --volume /dev:/dev \
           --volume /etc/localtime:/etc/localtime \
           --volume /var/ceph/lib:/var/lib/ceph \
           --volume /var/ceph/conf:/etc/ceph \
           --volume /var/ceph/run:/var/run/ceph \
           --volume /var/run/udev/:/var/run/udev/ \
           --volume /var/ceph/log:/var/log/ceph \
           --volume /run/lvm/:/run/lvm/ \
           --env CLUSTER=ceph \
           --env CEPH_DAEMON=OSD_CEPH_VOLUME_ACTIVATE \
           --env CONTAINER_IMAGE=ceph/daemon:latest-octopus \
           --env OSD_ID=1 \
           --name=ceph-osd-1 \
           --hostname=ceph-osd-1 \
           --restart=always \
           docker.io/ceph/daemon:latest-octopus

查看OSD部署状态:

docker exec -it ceph-osd-1 df | grep "osd"

使用sdd创建OSD

初始化存储卷:

docker run --rm \
           --privileged \
           --net=host \
           --ipc=host \
           --volume /run/lock/lvm:/run/lock/lvm \
           --volume /var/run/udev/:/var/run/udev/ \
           --volume /dev:/dev \
           --volume /var/ceph/conf:/etc/ceph \
           --volume /run/lvm/:/run/lvm/ \
           --volume /var/ceph/lib/:/var/lib/ceph/ \
           --volume /var/ceph/log/:/var/log/ceph/ \
           --entrypoint=ceph-volume \
           ceph/daemon:latest-octopus --cluster ceph lvm prepare --bluestore --data /dev/sdd

创建OSD:

docker run --detach \
           --privileged \
           --net=host \
           --pid=host \
           --ipc=host \
           --volume /etc/timezone:/etc/timezone \
           --volume /etc/localtime:/etc/localtime \
           --volume /dev:/dev \
           --volume /etc/localtime:/etc/localtime \
           --volume /var/ceph/lib:/var/lib/ceph \
           --volume /var/ceph/conf:/etc/ceph \
           --volume /var/ceph/run:/var/run/ceph \
           --volume /var/run/udev/:/var/run/udev/ \
           --volume /var/ceph/log:/var/log/ceph \
           --volume /run/lvm/:/run/lvm/ \
           --env CLUSTER=ceph \
           --env CEPH_DAEMON=OSD_CEPH_VOLUME_ACTIVATE \
           --env CONTAINER_IMAGE=ceph/daemon:latest-octopus \
           --env OSD_ID=2 \
           --name=ceph-osd-2 \
           --hostname=ceph-osd-2 \
           --restart=always \
           docker.io/ceph/daemon:latest-octopus

查看OSD部署状态:

docker exec -it ceph-osd-2 df | grep "osd"

使用sde创建OSD

初始化存储卷:

docker run --rm \
           --privileged \
           --net=host \
           --ipc=host \
           --volume /run/lock/lvm:/run/lock/lvm \
           --volume /var/run/udev/:/var/run/udev/ \
           --volume /dev:/dev \
           --volume /var/ceph/conf:/etc/ceph \
           --volume /run/lvm/:/run/lvm/ \
           --volume /var/ceph/lib/:/var/lib/ceph/ \
           --volume /var/ceph/log/:/var/log/ceph/ \
           --entrypoint=ceph-volume \
           ceph/daemon:latest-octopus --cluster ceph lvm prepare --bluestore --data /dev/sde

创建OSD:

docker run --detach \
           --privileged \
           --net=host \
           --pid=host \
           --ipc=host \
           --volume /etc/timezone:/etc/timezone \
           --volume /etc/localtime:/etc/localtime \
           --volume /dev:/dev \
           --volume /etc/localtime:/etc/localtime \
           --volume /var/ceph/lib:/var/lib/ceph \
           --volume /var/ceph/conf:/etc/ceph \
           --volume /var/ceph/run:/var/run/ceph \
           --volume /var/run/udev/:/var/run/udev/ \
           --volume /var/ceph/log:/var/log/ceph \
           --volume /run/lvm/:/run/lvm/ \
           --env CLUSTER=ceph \
           --env CEPH_DAEMON=OSD_CEPH_VOLUME_ACTIVATE \
           --env CONTAINER_IMAGE=ceph/daemon:latest-octopus \
           --env OSD_ID=3 \
           --name=ceph-osd-3 \
           --hostname=ceph-osd-3 \
           --restart=always \
           docker.io/ceph/daemon:latest-octopus

查看OSD部署状态:

docker exec -it ceph-osd-3 df | grep "osd"

查看Ceph集群状态

docker exec -it ceph-mon ceph -s

部署RADOS网关

Rados网关提供S3与Swift相容的API,存储数据至对象存储。首先,配置RGW前端服务的端口号:

vi /var/ceph/conf/ceph.conf

在上述配置文件中,添加如下内容:

[client.rgw.ceph-rgw]
rgw_frontends = "civetweb port=8080"

然后,导出client.bootstrap-rgw的keyring:

docker exec -it ceph-mon ceph auth get client.bootstrap-rgw -o /var/lib/ceph/bootstrap-rgw/ceph.keyring

部署Rados网关:

docker run --detach \
           --net=host \
           --volume /etc/timezone:/etc/timezone \
           --volume /etc/localtime:/etc/localtime \
           --volume /var/ceph/lib:/var/lib/ceph \
           --volume /var/ceph/conf:/etc/ceph \
           --publish 8080:8080 \
           --name=ceph-rgw \
           --hostname=ceph-rgw \
           --restart=always \
           ceph/daemon:latest-octopus rgw

使用curl工具测试部署情况:

curl -H "Content-Type: application/json" "http://127.0.0.1:8080"

下载S3客户端脚本:

wget "https://gist.githubusercontent.com/kairen/e0dec164fa6664f40784f303076233a5/raw/33add5a18cb7d6f18531d8d481562d017557747c/s3client"
chmod u+x s3client

安装执行依赖:

apt install -y python3-pip
pip3 install boto

创建一个S3测试用户:

docker exec -it ceph-rgw radosgw-admin user create --uid="test" --display-name="I'm Test account" --email="test@example.com"

创建S3环境参数配置文件:

vi s3key.sh

在上述文件中,添加以下内容:

export S3_ACCESS_KEY=K04F3UTOFF2KG9ARG3DQ
export S3_SECRET_KEY=yVP8UplgREGmvE2GPOkQ6DX9YCC0GJ8iJEOdqgGu
export S3_HOST=127.0.0.1
export S3_PORT=8080

其中,S3_ACCESS_KEY对应于创建测试用户时输出的access_key,S3_SECRET_KEY对应于创建测试用户时输出的secret_key,请根据实际的输出填写!

使得S3环境参数生效:

source s3key.sh

查看当前的bucket列表:

./s3client list

创建一个bucket,然后上传文件:

./s3client create files
./s3client upload files s3key.sh /
./s3client list files

部署元数据存储服务

元数据服务器为ceph文件系统存储元数据。容器化部署如下:

docker run --detach \
           --net=host \
           --volume /var/ceph/lib:/var/lib/ceph \
           --volume /var/ceph/conf:/etc/ceph \
           --env CEPHFS_CREATE=1 \
           --name=ceph-mds \
           --hostname=ceph-mds \
           ceph/daemon:latest-octopus mds

查看部署情况:

docker exec -it ceph-mds ceph mds stat
docker exec -it ceph-mds ceph fs ls

部署Ceph管理器

Ceph MGR是集群的管理组件。容器化部署如下:

docker run --detach \
           --net=host \
           --volume /var/ceph/conf:/etc/ceph \
           --volume /var/ceph/lib:/var/lib/ceph \
           --name=ceph-mgr \
           --hostname=ceph-mgr \
           ceph/daemon:latest-octopus mgr

查看Ceph集群状态:

docker exec -it ceph-mgr ceph -s

查看Ceph集群的容器列表:

docker ps | grep ceph

删除Ceph存储服务

删除Ceph集群的容器:

docker stop ceph-{mgr,mds,rgw,mon,osd-0,osd-1,osd-2,osd-3}
docker rm ceph-{mgr,mds,rgw,mon,osd-0,osd-1,osd-2,osd-3}
rm -rf /var/ceph

销毁磁盘的GPT数据结构:

sudo dmsetup remove_all
sudo sgdisk --zap-all /dev/sdb
sudo sgdisk --zap-all /dev/sdc
sudo sgdisk --zap-all /dev/sdd
sudo sgdisk --zap-all /dev/sde
Write a comment...