Ceph Luminous 安装要点

只记录Luminous 和旧版有区别的地方,基本流程没有变,参见旧文。 Bootstrap keyring 之前的版本在初始化mon的时候会在/var/lib/ceph/bootstrap-{节点名}/自动生成bootstrap其他节点用的keyring,但是有时候又不会。 如果没有这个keyring,可以手动生成以初始化除了mon以外的节点。 根据文档: ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring \ --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' 但是不知道为什么并没有用,在ceph auth list里面并没有看到新的key生成。所以还是用老方法: ceph auth get-or-create client.bootstrap-osd mon 'profile bootstrap-osd' 创建bluestore Luminous 默认存储backend 由filestore替换成了新的bluestore,同时也简化了初始化流程: ceph-volume lvm create --data {data-path} 要求硬盘没有挂载。 这样默认创建出来的bluestore 会分出两个区,一个区给block,一个区给db。如果有更好的设备,可以按如下方式把db单独放在另一块盘。 假设sdc是一块ssd,想要把所有bluestore的db都放在sdc上。在sdc上创建bluestore rocksdb用的lg: pvcreate /dev/sdc vgcreate ceph-journal /dev/sdc 对每个OSD, - 创建db用的lv: lvcreate --size 10G ceph-journal --name ${dev}.db && \ lvcreate --size 10G ceph-journal --name ${dev}.wal prepare, activate: ceph-volume lvm prepare --data /dev/${dev} --block.
Read more...

使用certbot开启HTTPS

Deadline就是生产力,因为Chrome 50开始不允许不安全域名使用geolocation,所以不得不上https了。使用certbot简直将添加https变成了一件trivial的事情,但是因为我是自己编译安装的nginx,所以没有自动配置好nginx。如果使用yum安装nginx,应该只需要安装执行certbot即可。 安装certbot: yum -y install yum-utils yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional yum install certbot 执行certbot:certbot certonly --webroot -w {webroot} -d sub.domain.com -d domain.com 其中webroot指网站的根目录,-d为该目录的域名,可以有多个,可以有几组这样的-w,-d组合。 这个命令会有两个验证步骤:在你指定的webroot下放一个文件,在远端尝试访问这个文件,来确定你是否有这个网站的权限。所以你执行这个命令前要保证这个域名和指定的webroot是可以访问的,否则会遇到类似urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://sub.domain.com/.well-known/acme-challenge/longlonglonglonghash 的错误。这时你需要检查下你的web服务器的配置了。 接下来手动配置nginx。 生成ssl dhparam:openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048。 配置nginx: server { listen 443 http2 ssl; server_name example.com www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ######################################################################## # from https://cipherli.st/ # # and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html # ######################################################################## ssl_protocols TLSv1 TLSv1.
Read more...

Ceph手动升级要点

总结一下自己从Hammer手动(不使用ceph-deploy)升级到Jewel遇到的问题作为前车之鉴。重要信息没有列举,没有直接遇到这些问题的读者请读完后再实施。 0. 安装问题 先升级Ceph,这一步没有什么,因为升级并不会重启现有节点,所以还是旧的在跑,需要注意的都在重启的时候。之前是用自己的源安装的,这次用外部源,国内最好配置国内源,一个示例可用的完整的使用了阿里的Ceph源的repo如下,写入/etc/yum.repos.d/ceph.repo即可。 [ceph] name=Ceph packages for $basearch baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/$basearch enabled=1 priority=2 gpgcheck=1 [ceph-noarch] name=Ceph noarch packages baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch enabled=1 priority=2 gpgcheck=1 [ceph-source] name=Ceph source packages baseurl=https://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS enabled=0 priority=2 gpgcheck=1 一开始使用这个源配置的时候遇到Public key for *.rpm is not installed错误,gpgcheck改成0即可。 然后直接yum upgrade ceph。可能会遇到依赖不满足的问题,可以试下安装epel的源:epel-release。 接下来注意一下重启的步骤,不然可能会出问题: 1. MON 2. OSD 3. MDS 4. RGW 1. 重启 Jewel版Ceph的默认用户变成ceph:ceph,然而低版本的则默认是root,直接重启会造成/var/lib/ceph/{node-type} permission denied问题。 需要将/var/lib/ceph以及子目录赋给ceph:ceph:chown -R ceph:ceph /var/lib/ceph。但是chown并不管链接,OSD的journal和data都是链接过来的,所以还需要chown data和journal。 Jewel与Hammer不同,使用systemctl作为服务管理,不再使用/etc/init.d/ceph了,这里说下升级会用到的systemctl用法给不熟悉的读者。systemctl是支持通配符的,操作所有ceph服务: systemctl {status, start, stop} ceph-*,注意不要少了-。重启前的旧进程因为是init script启动的,所以在systemctl下显示的是ceph-{node-type}.{instance-id}.***的形式,可以先status,看到名字之后再复制、stop,最简便的办法是systemctl stop ceph-{node-type}*,之后启动就是正常的systemctl service的命名方式了:systemctl start ceph-{node-type}@{instance-id}.
Read more...

Ceph手动部署要点

虽然现在preferred的安装方式是采用ceph-deploy,简化了安装了流程,而且便于日后的维护升级。但是手动走一遍有利于新手理解一些Ceph的概念。这篇文章总结一下我几次手动部署的步骤,特别注意了一下官方文档中不清楚了错误的地方。 (针对10.2.x Jewel,12.2.x Luminous 参见Ceph Luminous 安装要点) 0. 安装 至少在Hammer版,Ceph的rpm少包含了一个重要的依赖,在CentOS上导致使用init script的时候会报: /etc/init.d/ceph: line 15: /lib/lsb/init-functions: No such file or directory 需要安装redhat-lsb,只有这个坑,其他的直接yum或者自己构建即可。 需要提醒的是,国内使用官方yum源可能很慢,可以使用国内的镜像源,例如阿里或网易。 1. Bootstrap monitors 首先要初始化monitors,这是最复杂的步骤,有了mon集群之后,其他集群就可以很方便地加入mon管理的节点拓扑了。 1.1 需要的东西 fsid: uuidgen cluster name monitor name: hostname -s,注意,下面所提及的命令中的hostname,都是执行命令的机器的短hostname,即hostname -s,所以为了区分节点,建议使用FQDN,比如node1.cluster1.ceph,这样该机的短hostname即为node1 monitor map:monmaptool mointor keyring:monitor之间使用密钥通信,初始化mon时需要使用密钥生成的keyring administrator keyring:创建管理用户client.admin 1.2 具体步骤 创建第一个节点,后面的节点因为在这个节点中已经生成了相关文件,会省略一些步骤。 创建/etc/ceph/{cluster name}.conf,最小模板: [global] fsid = {fsid} mon initial members = {hostname}[,{hostname}] mon host = {ip}[,{ip}] 创建 mon keyring: ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon.
Read more...