# CephLearning **Repository Path**: brightestBoy/CephLearning ## Basic Information - **Project Name**: CephLearning - **Description**: 主要是和ceph相关,资料总结 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2018-12-28 - **Last Updated**: 2021-11-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CephLearning #### 介绍 主要是和ceph相关,资料总结 #### 软件架构 1. ceph安装说明 * 本测试环境使用5台虚拟机,一台作为管理节点部署ceph-deploy,一台做为mon,2台做为osd,一台做为rgw,都为ceph节点。 #### 安装教程 1. Maven构建 2. jdk1.8 #### 使用说明 1. 修改endpoint,以及bucket name *** #### 相关命令 `ceph` 安装 注意版本的命名规则,本次安装为jewel版本,也就是10.2.*。下一版本为K、L、M版。 1.`预检` * 配置/etc/hostname,各个节点都要修改 * cat /etc/hostname,查看 * vim /etc/hostname * 立即刷新,hostname name * 配置/etc/hosts,为后面ssh做准备 * cat /etc/hosts ``` 192.168.2.105 admin 192.168.2.106 node1 192.168.2.107 node2 192.168.2.108 node3 ``` * 增加用户,ceph一般不用root用户,各个节点都需要操作 * sudo useradd -d /home/repchain -m repchain * sudo passwd repchain * echo “repchain ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/repchain * sudo chmod 0440 /etc/sudoers.d/repchain * 安装ntp(mon节点要安装,其他尽量安装) - yum install ntp -y - 或sudo yum install ntp ntpdate ntp-docs -y - systemctl enable ntpd.service 或 ntpd - stemctl start ntpd * 给ntp添加定时同步任务crontab -e * 30 2 * * */usr/sbin/ntpdate ntp1.aliyun.com 定时校对时钟 * systemctl restart crond * 校对时钟 * ntpdate 0.cn.pool.ntp.org * ntpdate ntp1.aliyun.com * 无密码登陆 * ssh-keygen 一直回车(回车是为了免密,在新建的用户下,不要用sudo) * ssh-copy-id usr@hostname * ssh-copy-id repchain@node1 * ssh-copy-id usr@node1 1. 测试:(hostname -s) 1. ssh node1 2. ssh node2 3. ping node1 4. ping node2 * vim ~/.ssh/config 后面ceph-deploy用到 ```` Host node1 Hostname node1 User repchain Host node2 Hostname node2 User repchain Host node3 Hostname node3 User repchain * sudo chmod 600 config (~/.ssh/config文件) * 配置网络 * sudo vim /etc/sysconfig/network-scripts/ifcfg-enp0s3 (注意网卡名字) * ONBOOT="yes”,启动时网络接口就通了。 * 配置端口 * sudo firewall-cmd --list-all * 关闭防火墙 * sudo systemctl stop firewalld.service #停止 firewall * sudo systemctl disable firewalld.service #禁止 firewall 开机启动 * 或者开放部分端口 * sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent mon端口 * firewall-cmd --zone=public --add-port 6800-7300/tcp --permanent osd端口 * 配置selinux * 临时关闭 * sudo setenforce 0 * 或者永久关闭 * vim /etc/selinux/config * SELINUX=disabled # 这里设置为 Permissive | disabled * SELINUXTYPE=targeted 2.`安装ceph-deploy` * 修改yum源 * 修改为阿里 * [原文:https://blog.csdn.net/jfengamarsoft/article/details/77683930 ] ```` * 删除默认的源,国外的比较慢 * yum clean all * cd /etc/yum.repos.d * sudo mv CentOS-Base.repo CentOS-Base.repo.bk * rm -rf /etc/yum.repos.d/*.repo * wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo * wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo * 修改里面的系统版本为7.3.1611,当前用的centos的版本的的yum源可能已经清空了 * sed -i '/aliyuncs/d' /etc/yum.repos.d/CentOS-Base.repo #删除阿里内网地址 * sed -i '/aliyuncs/d' /etc/yum.repos.d/epel.repo * sed -i 's/$releasever/7.3.1611/g' /etc/yum.repos.d/CentOS-Base.repo 或 * sed -i 's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo * sudo yum makecache * 或者按官方的来 * 配置安装依赖包 - sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --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-noarch] - name=Ceph noarch packages - baseurl=http://download.ceph.com/rpm-jewel/el7/noarch - enabled=1 - gpgcheck=1 - type=rpm-md - gpgkey=https://download.ceph.com/keys/release.asc - priority=1 - sudo yum install ceph-deploy 3.`ceph-deploy新建集群` * sudo mkdir my-cluster * 清除数据 * ceph-deploy purgedata admin node1 node2 node3 * ceph-deploy purge admin node1 node2 node3 * ceph-deploy forgetkeys * 新建mon * ceph-deploy new node1 * vim ceph.conf * 添加osd pool default size = 2 #增加默认副本数为 2 * Ext4系统需要补充参数 * vim ceph.conf * osd max object name len = 256 * osd max object namespace len = 64install * 给各个节点安装ceph * ceph-deploy install node1 node2 node3 * ceph -v * 在新建完节点之后进行收集密钥 * ceph-deploy mon create-initial * 或ceph-deploy --overwrite-conf mon create-initial 4.`创建osd` * 创建目录 - ssh node2 - sudo mkdir /var/local/osd0 - sudo chown -R ceph:ceph /var/local/osd0 - exit - ssh node3 * 准备osd * prepare * ceph-deploy osd prepare node2:/var/local/osd0 node3:/var/local/osd1 * 激活osd * activate * ceph-deploy osd activate node2:/var/local/osd0 node3:/var/local/osd1 5.`分发密钥与配置文件` * 将管理节点得配置文件同步到其他节点 * ceph-deploy config push ceph-cli * 将admin的密钥共享到其他节点,这样不用指定monitor地址了 * ceph-deploy admin admin node1 node2 node3 * sudo chmod +r /etc/ceph/ceph.client.admin.keyring 6. `ceph群自启动` * 在各节点需要执行如下命令: - sudo systemctl enable ceph-mon.target - sudo systemctl enable ceph-osd.target - sudo systemctl enable ceph.target 7.`创建网关并测试` * 创建网关 * ceph-deploy install --rgw node4(安装ceph节点得时候,只安装—rgw功能,未安装mds、ods等) * ceph-deploy rgw create node4 * sudo firewall-cmd --zone=public --add-port=7480/tcp --permanent 网关端口 * //ceph-deploy --overwrite-conf config push [] 推 * //ceph-deploy --overwrite-conf config pull {hostname} 拉 * 测试访问性 * 访问node4:7480 即可查看 * curl node4:7480 * 创建s3用户,并访问 * sudo radosgw-admin user create --uid="repchain" --display-name="First User" * sudo yum install python-boto * access_key: "your access_key" * secret_key: "your secret_key" 8.`创建mds并测试` * 安装mds * ceph-deploy install --mds node4(仅仅安装mds功能包) * ceph-deploy mds create node4 * ceph osd pool create cephfs_data * ceph osd pool create cephfs_metadata 64 * ceph fs new cephfs(或者起一个repchain的名字) cephfs_metadata cephfs_data * kernel 挂载 * admin挂载 / * sudo mount -t ceph 192.168.2.106:6789:/ /mnt/cephfs -o name=admin,secretfile=/etc/ceph/ceph.client.admin.keyring * sudo mount -t ceph 192.168.2.106:6789:/ /mnt/cephfs -o name=admin,secret={admin对应的secretekey} * 多用户挂载(类似于ftp的用户隔离) * 创建用户 fs1 * 在admin挂载目录基础上,然后新建各个用户的目录 * sudo ceph auth get-or-create client.fs1 mon 'allow r' mds 'allow r, allow rw path=/fs1' osd 'allow rw pool=cephfs_data' {可选 -o /etc/ceph/ceph.client.fs1.keyring} * sudo ceph auth get client.fs1 或 sudo ceph auth list * sudo mount -t ceph 192.168.2.106:6789:/fs1 /mnt/ -o name=fs1,secret={fs1对应的secretekey} * 参考:http://strugglesquirrel.com/2018/07/17/cephfs%E5%88%9D%E6%8E%A2-%E5%B0%8F%E8%AF%95%E7%89%9B%E5%88%80/ 9.`ceph的一些命令` ``` ceph -s 查看集群状态 ceph health ceph -w 查看数据变化 ceph osd tree 查看osd状态树 sudo stop ceph-all 停止所有ceph进程 ceph-deploy uninstall [{ceph-node}] 卸载所有ceph程序 ceph-deploy purge [[ceph-node} {ceph-node}] 删除ceph相关的包 ceph-deploy purgedata [{ceph-node} {ceph-node}] 删除ceph相关配置文件 ceph-deploy forgetkeys 删除key ceph quorum_status --format json-pretty ```