在虚拟机中快速搭建 Ansible 跟 Ceph 环境
文章目录
[隐藏]
- 虚拟机配置
- 安装过程
- 1. 改 hostname 跟 hosts 文件
- 2. 添加用户
- 3. 无密码 ssh 登录
- 安装 Ansible
- 1. 从包管理工具安装
- 2. 修改 Ansible 配置文件
- 3. 验证&&测试:
- Ceph deploy 节点安装
- 1. 从包管理工具安装
- Ceph 节点安装准备
- 1. 安装 ntp
- 2. 安装依赖
- 3. 开放端口
- ceph-mon 安装
- 1. 添加 mon 节点
- 2. 修改配置文件
- 2. 安装 ceph 节点
- 3. 初始化 mon 节点
- ceph osd 节点安装
- 1. 查看集群 uuid
- 2. 安装 osd
- 3. 查看集群健康状况
在上一篇文章 Vagrant 单机快速模拟集群 https://imquanquan.net/archives/Vagrant-single-machine-fast-simulation-cluster.html 中,介绍了如何在本机中,快速利用 Vagrant 虚拟机管理工具快速起四台虚拟机来模拟集群,这篇文章将利用这些虚拟机来搭建一个 Ansible 跟 Ceph 的集群环境。
虚拟机配置
以上是各虚拟机节点的配置情况。四各节点内存都是 512 M,CPU 一核,系统 Dabian 9。
安装过程
1. 改 hostname 跟 hosts 文件
改 hostname 跟 hosts 有利于识别节点还有可以让节点之间靠 hostname 来通信。
创建虚拟机的时候已经设好了 hostname,把下面一段加入每个节点的 /etc/hosts 即可:
10.1.0.101 node1 10.1.0.102 node2 10.1.0.103 node3 10.1.0.104 deploy
2. 添加用户
下一件要做的就是,让添加部署的时候要用的用户了。在每个节点都执行:
sudo useradd -d /home/test -m test sudo echo "test ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/test sudo chmod 0440 /etc/sudoers.d/test sudo passwd test
还顺便添加了无密码 sudo 的权限
3. 无密码 ssh 登录
添加部署节点 deploy 对 node 的无密码 ssh 登录,以搭建 Ansible 然后可以批量对 node 执行操作。在 deploy 执行:
su test ssh-keygen cat /home/test/.ssh/id_rsa.pub
三下回车生成密钥对,然后拷贝 /home/test/.ssh/id_rsa.pub 文件的内容到各个 node 节点:
su test mkdir ~/.ssh vi ~/.ssh/authorized_keys sudo chmod 600 ~/.ssh/authorized_keys
编辑 ~/.ssh/config 文件:
Host node1 User test Port 22 Host node2 User test Port 22 Host node3 User test Port 22
安装 Ansible
以下操作无特殊说明都在 deploy 节点进行操作。
1. 从包管理工具安装
sudo apt update && sudo apt install ansible
2. 修改 Ansible 配置文件
在 /etc/ansible/hosts 文件加入:
[ceph-deploy] localhost ansible_connection=local [ceph-node] node1 node2 node3
3. 验证&&测试:
ansible all -m ping
Ceph deploy 节点安装
1. 从包管理工具安装
添加 release key,软件源。这里安装的是 jewel 版本的 ceph:
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add - echo deb http://download.ceph.com/debian-jewel/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
更新,安装:
sudo apt-get update && sudo apt-get install ceph-deploy
Ceph 节点安装准备
1. 安装 ntp
修改时区:
ansible all -a "cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime" --sudo
建议在所有 Ceph 节点上安装 NTP 服务(特别是 Ceph Monitor 节点),并跟同一个 ntp 服务器进行时间同步,以免因时钟漂移导致故障:
ansible all -a "apt update" --sudo ansible all -a "apt install ntp -y" --sudo
编辑 ntp 配置文件:
vi ntp.conf restrict cn.pool.ntp.org server cn.pool.ntp.org
分发,重启服务:
ansible all -m copy -a "src=/home/test/ntp.conf dest=/etc/ntp.conf" --sudo ansible all -a "systemctl restart ntp" --sudo
2. 安装依赖
安装 python-minimal:
ansible all -a "apt -y install python-minimal -y" --sudo
3. 开放端口
ansible all -a "iptables -A INPUT -i eth0 -p tcp -s 10.1.0.0/24 --dport 6789 -j ACCEPT" --sudo ansible all -a "iptables -A INPUT -i eth0 -p tcp -s 10.1.0.0/24 --dport 6800:7300 -j ACCEPT" --sudo ansible all -a "iptables-save" --sudo
ceph-mon 安装
1. 添加 mon 节点
mkdir ceph-cluster && cd ceph-cluster ceph-deploy new node1 node2 node3
2. 修改配置文件
修改 ceph.conf 文件,添加:
# osd 节点个数 osd_pool_default_size = 3 # osd 节点最小个数 osd_pool_default_min_size = 1 # ceph 公共网络 public network = 10.1.0.0/24
2. 安装 ceph 节点
使用华中科大镜像源安装:
ansible all -a "wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -" sudo ceph-deploy install --repo-url http://mirrors.ustc.edu.cn/ceph/debian-jewel/ node1 node2 node3
3. 初始化 mon 节点
ceph-deploy mon create-initial ceph-deploy admin node1 node2 node3
ceph osd 节点安装
1. 查看集群 uuid
集群的 uuid 就是这个 ceph 集群的唯一标识,后面要用:
cat ceph.conf [global] fsid = 88fc281e-b9d0-4de3-b662-eaf3bef46943 mon_initial_members = node1, node2, node3 mon_host = 10.1.0.101,10.1.0.102,10.1.0.103 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx osd_pool_default_size = 3 osd_pool_default_min_size = 1 public network = 10.1.0.0/24
其中 88fc281e-b9d0-4de3-b662-eaf3bef46943 就是 uuid
2. 安装 osd
ssh 到各个节点,执行以下命令:
mkdir /home/test/osd0 sudo chown ceph: /home/test/osd0/ sudo ceph-disk prepare --cluster ceph --cluster-uuid 88fc281e-b9d0-4de3-b662-eaf3bef46943 --fs-type ext4 /home/test/osd0/ sudo ceph-disk activate /home/test/osd0/
以上命令是在 node1 上执行的,请将 uuid 替换成自己的,–fs-type 是 ext4,请换成自己的类型。然后将 osd0 替换掉对应节点的 osd 编号。
3. 查看集群健康状况
当所有节点都安装完成,可以在任一节点执行以下命令查看集群健康状况:
ceps -s
原文出处:imquanquan -> https://imquanquan.net/archives/setup-ansible-and-ceph.html