heketi配置文件/etc/heketi/heketi.json
...... #修改端口,防止端口冲突 "port": "18080", ...... #允许认证 "use_auth": true, ...... #admin用户的key改为adminkey "key": "adminkey" ...... #修改执行插件为ssh,并配置ssh的所需证书,注意要能对集群中的机器免密ssh登陆,使用ssh-copy-id把pub key拷到每台glusterfs服务器上 "executor": "ssh", "sshexec": { "keyfile": "/root/.ssh/id_rsa", "user": "root", "port": "22", "fstab": "/etc/fstab" }, ...... # 定义heketi数据库文件位置 "db": "/var/lib/heketi/heketi.db" ...... #调整日志输出级别 "loglevel" : "warning"
需要说明的是,heketi有三种executor,分别为mock、ssh、kubernetes,建议在测试环境使用mock,生产环境使用ssh,当glusterfs以容器的方式部署在kubernetes上时,才使用kubernetes。我们这里将glusterfs和heketi独立部署,使用ssh的方式。
配置ssh密钥
在上面我们配置heketi的时候使用了ssh的executor,那么就需要heketi服务器能通过ssh密钥的方式连接到所有glusterfs节点进行管理操作,所以需要先生成ssh密钥
# 选择ssh执行器,heketi服务器需要免密登陆GlusterFS集群的各节点; # -t:秘钥类型; # -q:安静模式; # -f:指定生成秘钥的目录与名字,注意与heketi.json的ssh执行器中"keyfile"值一致; # -N:秘钥密码,””即为空 [root@heketi ~]# ssh-keygen -t rsa -q -f /etc/heketi/heketi_key -N ""
ssh-keygen -t rsa -q -f /etc/heketi/heketi_key -N '' chmod 600 /etc/heketi/heketi_key.pub # ssh公钥传递,这里只以一个节点为例 ssh-copy-id -i /etc/heketi/heketi_key.pub root@192.168.1.220 # 验证是否能通过ssh密钥正常连接到glusterfs节点 [root@node01 ~]# ssh -i /etc/heketi/heketi_key root@192.168.1.220 Last login: Tue Jan 26 21:06:06 2021 from 192.168.1.28 [root@master ~]#