ceph安装配置
简介
ceph是一个开源分布式存储系统,支持PB级别的存储,支持对 象存储,块存储和文件存储,高性能,高可用,可扩展。
部署网络建议架构图
部署
部署架构图,本次实验部署jewel版本
实验环境的Vagrantfile
lab1节点既作admin节点又作node节点,lab2,lab3只作为node节点,lab4作为作测试使用ceph的节点
# -*- mode: ruby -*- # vi: set ft=ruby : ENV["LC_ALL"] = "en_US.UTF-8" Vagrant.configure("2") do |config| (1..4).each do |i| config.vm.define "lab#{i}" do |node| node.vm.box = "centos-7.4-docker-17" node.ssh.insert_key = false node.vm.hostname = "lab#{i}" node.vm.network "private_network", ip: "11.11.11.11#{i}" node.vm.provision "shell", inline: "echo hello from node #{i}" node.vm.provider "virtualbox" do |v| v.cpus = 3 v.customize ["modifyvm", :id, "--name", "lab#{i}", "--memory", "3096"] file_to_disk = "lab#{i}_vdb.vdi" unless File.exist?(file_to_disk) # 50GB v.customize ['createhd', '--filename', file_to_disk, '--size', 50 * 1024] end v.customize ['storageattach', :id, '--storagectl', 'IDE', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', file_to_disk] end end end end 复制代码
配置阿里ceph源
在所有节点执行如下操作
cat >/etc/yum.repos.d/ceph.repo<<EOF [ceph] name=ceph baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ gpgcheck=0 priority=1 [ceph-noarch] name=cephnoarch baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/ gpgcheck=0 priority=1 [ceph-source] name=Ceph source packages baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/SRPMS enabled=0 gpgcheck=1 type=rpm-md gpgkey=http://mirrors.163.com/ceph/keys/release.asc priority=1 EOF yum makecache 复制代码
在admin节点安装ceph-deploy
lab1 节点
# 官方源 # 如果已经配置了上面的阿里源,不需要再配置如下的源 # 推荐使用阿里源,因为官方源速度太慢 cat >/etc/yum.repos.d/ceph.repo<<EOF [ceph-noarch] name=Ceph noarch packages baseurl=https://download.ceph.com/rpm-jewel/el7/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc EOF # 更新系统软件 # 此操作可省略 # yum update -y # 安装 ceph-deploy yum install -y ceph-deploy 复制代码
配置admin节点连接node节点
安装之后需要配置admin节点可以ssh无密码登录每个node节点和测试节点,用户需要有sudo权限
# 在每一个node节点执行 useradd ceph echo 'ceph' | passwd --stdin ceph echo "ceph ALL = (root) NOPASSWD:ALL" > /etc/sudoers.d/ceph chmod 0440 /etc/sudoers.d/ceph # 配置sshd可以使用password登录 sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config systemctl reload sshd # 配置sudo不需要tty sed -i 's/Default requiretty/#Default requiretty/' /etc/sudoers # 在所有节点配置hosts # 包括要进行ceph测试的机器 # 使用vagrant实验时注意 # 由于vagrant会自动把主机名解析为 127.0.0.1 # 所以在实验时如果在ceph集群内任意一台机器进行实验时 # 注意把本机名解析为 127.0.0.1 的行注释,如下所示 # 127.0.0.1 lab1 lab1 cat >>/etc/hosts<<EOF 11.11.11.111 lab1 11.11.11.112 lab2 11.11.11.113 lab3 11.11.11.113 lab4 EOF # 在admin节点执行 # 创建ceph用户,配置sshkey登录 # 由于lab1节点作为node节点时已经创建过ceph用户 # 第一条命令可能会出错,忽略即可 useradd ceph su - ceph ssh-keygen ssh-copy-id ceph@lab1 ssh-copy-id ceph@lab2 ssh-copy-id ceph@lab3 ssh-copy-id ceph@lab4 复制代码
在admin节点创建集群
在lab1节点执行如下操作,node的主机名一定要设置正确 lab1, lab2, lab3。否则可能会无法实验成功
# 不要使用sudo也不要使用root用户运行如下的命令 su - ceph mkdir my-cluster cd my-cluster # 创建lab1为monitor ceph-deploy new lab1 # 查看配置文件 ls -l # 配置ceph.conf [global] ... # 如果有多个网卡,应该配置如下选项, # public network是公共网络,负责集群对外提供服务的流量 # cluster network是集群网络,负载集群中数据复制传输通信等 # 本次实验使用同一块网卡,生境环境建议分别使用一块网卡 public network = 11.11.11.0/24 cluster network = 11.11.11.0/24 # 安装 ceph 包 # 如果按照官方文档安装方法 会重新配置安装官方ceph源 # 由于网络问题,安装可能会出错,需要多次执行 # ceph-deploy install 其实只是会安装 ceph ceph-radosgw 两个包 # ceph-deploy install lab1 lab2 lab3 # 推荐使用阿里源安装,因为使用ceph-deploy安装会很慢 # 使用如下命令手动安装包,替代官方的 ceph-deploy install 命令 # 如下操作在所有node节点上执行 yum install -y ceph ceph-radosgw # 部署monitor和生成keys ceph-deploy mon create-initial ls -l *.keyring # 复制文件到node节点 ceph-deploy admin lab1 lab2 lab3 # 部署manager (luminous+)12及以后的版本需要部署 # 本次部署 jewel 版本 ,不需要执行如下命令 # ceph-deploy mgr create lab1 # 添加osd 以磁盘方式 # 本次实验采用此种方法 # sdb 为虚拟机添加的磁盘设置名 ceph-deploy osd create lab1:sdb lab2:sdb lab3:sdb # 在node节点创建目录 rm -rf /data/osd1 mkdir -pv /data/osd1 chmod 777 -R /data/osd1 chown ceph.ceph -R /data/osd1 # 添加osd 以文件目录方式 ceph-deploy osd prepare lab1:/data/osd1 lab2:/data/osd1 lab3:/data/osd1 ceph-deploy osd activate lab1:/data/osd1 lab2:/data/osd1 lab3:/data/osd1 # 查看状态 ssh lab1 sudo ceph health ssh lab1 sudo ceph -s 复制代码
清理集群
# 如果安装过程出错,使用如下命令清理之后重新开始 ceph-deploy purge lab1 lab2 lab3 ceph-deploy purgedata lab1 lab2 lab3 ceph-deploy forgetkeys rm ceph.* 复制代码
扩展集群
提高可用性
- 在lab1上运行metadata server 为后续使用cephfs
- 在lab2,lab3运行monitor和manager提高集群可用性
# 为了使用CephFS,必须启动 metadata server ceph-deploy mds create lab1 # 添加monitor ceph-deploy mon add lab2 ceph-deploy mon add lab3 ssh lab1 sudo ceph -s # 在monitor节点查看状态(需要以root用户或者sudo查看) ceph quorum_status --format json-pretty # 添加manager (luminous+)12及以后的版本需要部署 # 本次部署 jewel 版本 ,不需要执行如下命令 # ceph-deploy mgr create lab2 lab3 复制代码
部署RGW使用Ceph Object Gateway
提供S3/Swift存储功能,实现S3和Swift兼容的接口,可以使用S3或Swift的命令行工具或SDK来使用ceph
# 启动 rgw ceph-deploy rgw create lab1 # 修改配置 /etc/ceph/ceph.conf # 使用 rgw 监听在 80 端口 # lab1 为启动 rgw 的主机名 [client.rgw.lab1] rgw_frontends = "civetweb port=80" # 重启 rgw systemctl restart ceph-radosgw@rgw.lab1 # 访问测试 curl -I http://11.11.11.111/ 复制代码
使用ceph存储
应用存储使用架构图
对象存储
# 安装ceph yum install -y ceph # 复制相关文件到要使用ceph-client的机器 ceph-deploy admin lab4 # 测试 # 存储文件 echo 'hello ceph oject storage' > testfile.txt ceph osd pool create mytest 8 rados put test-object-1 testfile.txt --pool=mytest # 查看读取文件 rados -p mytest ls rados get test-object-1 testfile.txt.1 --pool=mytest cat testfile.txt.1 # 查看文件位置 ceph osd map mytest test-object-1 # 删除文件 rados rm test-object-1 --pool=mytest # 删除pool ceph osd pool rm mytest mytest --yes-i-really-really-mean-it 复制代码
块存储
# 安装ceph yum install -y ceph # 复制相关文件到要使用ceph-client的机器 ceph-deploy admin lab4 # 创建块设备镜像 rbd create foo --size 4096 --image-feature layering rbd info foo rados -p rbd ls # 映射镜像到块设备 sudo rbd map foo --name client.admin # 使用块设备创建文件系统 sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo # 挂载使用 sudo mkdir /mnt/ceph-block-device sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device cd /mnt/ceph-block-device echo 'hello ceph block storage' > testfile.txt # 清理 cd ~ sudo umount -lf /mnt/ceph-block-device sudo rbd unmap foo rbd remove foo rados -p rbd ls 复制代码
S3对象存储
11.11.11.111 为安装了 RGW 的机器
# 安装 yum install -y ceph ceph-radosgw # 复制相关文件到要使用ceph-client的机器 ceph-deploy admin lab4 # 创建S3所需要的pool ceph osd pool create .rgw 128 128 ceph osd pool create .rgw.root 128 128 ceph osd pool create .rgw.control 128 128 ceph osd pool create .rgw.gc 128 128 ceph osd pool create .rgw.buckets 128 128 ceph osd pool create .rgw.buckets.index 128 128 ceph osd pool create .rgw.buckets.extra 128 128 ceph osd pool create .log 128 128 ceph osd pool create .intent-log 128 128 ceph osd pool create .usage 128 128 ceph osd pool create .users 128 128 ceph osd pool create .users.email 128 128 ceph osd pool create .users.swift 128 128 ceph osd pool create .users.uid 128 128 # 查看 rados lspools # 访问测试 curl -I http://11.11.11.111/ # 创建S3用户 # 保存如下命令返回的 user access_key secret_key radosgw-admin user create --uid=foo --display-name=foo --email=foo@foo.com # 创建admin用户 radosgw-admin user create --uid=admin --display-name=admin # 允许admin读写users信息 radosgw-admin caps add --uid=admin --caps="users=*" # 允许admin读写所有的usage信息 radosgw-admin caps add --uid=admin --caps="usage=read,write" # 安装s3测试工具 yum install -y s3cmd # 配置s3cmd, 只需指定Access Key和Secret Key,其他默认即可 s3cmd --configure # 修该生成的配置文件 vim $HOME/.s3cfg host_base = 11.11.11.111 host_bucket = 11.11.11.111/%(bucket) use_https = False # 创建Bucket s3cmd mb s3://mybucket s3cmd ls # 上传Object echo 'hello ceph block storage s3' > hello.txt s3cmd put hello.txt s3://mybucket # 查看Object s3cmd ls s3://mybucket # 下载Object cd /tmp s3cmd get s3://mybucket/hello.txt cd ~ # 删除bucket下所有对象 s3cmd del -rf s3://mybucket/ s3cmd ls -r s3://mybucket # 删除Bucket s3cmd mb s3://mybucket1 s3cmd rb s3://mybucket1 # 删除S3用户 radosgw-admin user rm --uid=foo radosgw-admin user rm --uid=admin # 删除pool ceph osd pool delete .rgw .rgw --yes-i-really-really-mean-it ceph osd pool delete .rgw.root .rgw.root --yes-i-really-really-mean-it ceph osd pool delete .rgw.control .rgw.control --yes-i-really-really-mean-it ceph osd pool delete .rgw.gc .rgw.gc --yes-i-really-really-mean-it ceph osd pool delete .rgw.buckets .rgw.buckets --yes-i-really-really-mean-it ceph osd pool delete .rgw.buckets.index .rgw.buckets.index --yes-i-really-really-mean-it ceph osd pool delete .rgw.buckets.extra .rgw.buckets.extra --yes-i-really-really-mean-it ceph osd pool delete .log .log --yes-i-really-really-mean-it ceph osd pool delete .intent-log .intent-log --yes-i-really-really-mean-it ceph osd pool delete .usage .usage --yes-i-really-really-mean-it ceph osd pool delete .users .users --yes-i-really-really-mean-it ceph osd pool delete .users.email .users.email --yes-i-really-really-mean-it ceph osd pool delete .users.swift .users.swift --yes-i-really-really-mean-it ceph osd pool delete .users.uid .users.uid --yes-i-really-really-mean-it 复制代码
CephFS存储
# 安装ceph yum install -y ceph ceph-fuse # 复制相关文件到要使用ceph-client的机器 ceph-deploy admin lab4 # CephFS需要使用两个Pool来分别存储数据和元数据 ceph osd pool create fs_data 128 ceph osd pool create fs_metadata 128 ceph osd lspools # 创建一个CephFS ceph fs new cephfs fs_metadata fs_data # 查看 ceph fs ls # 使用内核提供的功能 挂载CephFS # 由于可能会有bug,建议使用 4.0 以上的内核 # 优点是性能比使用ceph-fuse更好 # name,secret 为 /etc/ceph/ceph.client.admin.keyring 里的内容 mkdir /mnt/mycephfs mount -t ceph lab1:6789,lab2:6789,lab3:6789:/ /mnt/mycephfs -o name=admin,secret=AQBoclRaiilZJBAACLjqg2OUOOB/FNa20UJXYA== df -h cd /mnt/mycephfs echo 'hello ceph CephFS' > hello.txt cd ~ umount -lf /mnt/mycephfs rm -rf /mnt/mycephfs # 使用 ceph-fuse 挂载CephFS mkdir /mnt/mycephfs ceph-fuse -m lab1:6789 /mnt/mycephfs df -h cd /mnt/mycephfs echo 'hello ceph CephFS' > hello.txt cd ~ umount -lf /mnt/mycephfs rm -rf /mnt/mycephfs # 清理 # 停止 metadata server # 本次部署在lab1,去lab1停止服务 systemctl stop ceph-mds@lab1 ceph fs rm cephfs --yes-i-really-mean-it ceph osd pool delete fs_data fs_data --yes-i-really-really-mean-it ceph osd pool delete fs_metadata fs_metadata --yes-i-really-really-mean-it # 开启 metadata server # 方便以后使用 cephfs systemctl start ceph-mds@lab1
本文转自掘金- ceph安装配置
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
k8s使用ceph实现动态持久化存储
简介 本文章介绍如何使用ceph为k8s提供动态申请pv的功能。ceph 提供底层存储功能,cephfs方式支持k8s的pv的3种访问模式ReadWriteOnce,ReadOnlyMany ,ReadWriteMany ,RBD支持ReadWriteOnce,ReadOnlyMany两种模式 访问模式只是能力描述,并不是强制执行的,对于没有按pvc声明的方式使用pv,存储提供者应该负责访问时的运行错误。例如如果设置pvc的访问模式为ReadOnlyMany ,pod挂载后依然可写,如果需要真正的不可写,申请pvc是需要指定 readOnly: true 参数 部署 部署k8s centos7使用kubeadm安装k8s-1.11版本 部署ceph centos7安装ceph分布式存储集群 在k8s集群中配置使用ceph 使用Ceph RBD 使用kubeadm安装集群的额外配置 # 如果使用kubeadm部署的集群需要这些额外的步骤 # 由于使用动态存储时 controller-manager 需要使用 rbd 命令创建 image # 所以 controller-manager 需...
- 下一篇
k8s日志收集实战
简介 本文主要介绍在k8s中收集应用的日志方案,应用运行中日志,一般情况下都需要收集存储到一个集中的日志管理系统中,可以方便对日志进行分析统计,监控,甚至用于机器学习,智能分析应用系统问题,及时修 复应用所存在的问题。 在k8s集群中应用一般有如下日志输出方式 直接遵循docker官方建议把日志输出到标准输出或者标准错误输出 输出日志到容器内指定目录中 应用直接发送日志给日志收集系统 本文会综合部署上述日志收集方案。 日志收集组件说明 elastisearch 存储收集到的日志 kibana 可视化收集到的日志 logstash 汇总处理日志发送给elastisearch 存储 filebeat 读取容器或者应用日志文件处理发送给elastisearch或者logstash,也可用于汇总日志 fluentd 读取容器或者应用日志文件处理发送给elastisearch,也可用于汇总日志 fluent-bit 读取容器或者应用日志文件处理发送给elastisearch或者fluentd 部署 本次实验使用了3台虚拟机做k8s集群,每台虚拟机3G内存 部署前的准备 # 拉取文件 git cl...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS关闭SELinux安全模块
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7设置SWAP分区,小内存服务器的救世主