管理路径上的 SSL 用于*独特*的 GlusterFS 设置

管理路径上的 SSL 用于*独特*的 GlusterFS 设置

嗨,我有两个文件服务器,我们称它们为 g1 @ 10.13.13.201 和 g2 @ 10.13.13.202。我已成功将两者合并到安装在 10.13.13.201:/mnt/glusterfs 上的 glusterfs 卷中。因此从技术上讲,我有一个盒子,它只是一个 glusterd 服务器,另一个盒子既是服务器又是客户端。我选择这样做是因为每个文件服务器都有 24 个驱动器,只有一个驱动器是操作系统,其余的都是 raidz2 zfs 阵列中的 LSOD。所以我想,为什么需要一个单独的控制器,当其中一台机器有足够的能力自己承担这些责任时。

到目前为止,此设置运行良好,但是我在使用此配置时遇到了一些问题。因此,我从头开始,生成 zfs 池,并安装 glusterfs 服务器软件。在配置任何 gluster 对等体之前,我运行以下脚本在两个框上生成证书和 CA:

#!/bin/bash

#temp user directory for generation of keys
mkdir ~/temp_ssl
cd ~/temp_ssl

#generating self-signed keys
openssl genrsa -out $HOSTNAME.key 2048
openssl req -new -x509 -key "$HOSTNAME".key -subj "/CN=$HOSTNAME" -out "$HOSTNAME".pem

#grab both keys
sshpass -p 1 scp [email protected]:~/temp_ssl/g1.key . 
sshpass -p 1 scp [email protected]:~/temp_ssl/g2.key . 
#concatenate both keys to generate CA
for f in *key; do
 cat $f >> gluster.ca;
done;
#cp CA and key and CA to /etc/ssl, change ownership and access priveledges to only root read / write.
sudo cp $HOSTNAME* gluster.ca /etc/ssl
sudo chown root:root /etc/ssl/$HOSTNAME* gluster.ca
sudo chmod 0600 /etc/ssl/$HOSTNAME* gluster.ca

#remove the unsecured keys
cd 
sudo rm -rf temp_ssl

#generate file flag for ssl secured maintenance between glusters
sudo touch /var/lib/glusterd/secure-access

#restart glusterd
sudo system systemctl restart glusterfs-server.service

exit 0

但是,将安全访问文件放入 glusterd 维护路径会导致服务器崩溃:

$ sudo systemctl restart glusterfs-server.service
Job for glusterfs-server.service failed because the control process exited with error code. See "systemctl status glusterfs-server.service" and "journalctl -xe" for details.
$ sudo systemctl status glusterfs-server.service
glusterfs-server.service - LSB: GlusterFS server
   Loaded: loaded (/etc/init.d/glusterfs-server; bad; vendor preset: enabled)
   Active: failed (Result: exit-code) since Wed 2017-03-15 18:50:17 CDT; 1min 0s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 6482 ExecStop=/etc/init.d/glusterfs-server stop (code=exited, status=0/SUCCESS)
  Process: 6526 ExecStart=/etc/init.d/glusterfs-server start (code=exited, status=1/FAILURE)

Mar 15 18:50:17 g1 systemd[1]: Starting LSB: GlusterFS server...
Mar 15 18:50:17 g1 glusterfs-server[6526]:  * Starting glusterd service glusterd
Mar 15 18:50:17 g1 glusterfs-server[6526]:    ...fail!
Mar 15 18:50:17 g1 systemd[1]: glusterfs-server.service: Control process exited, code=exited status=1
Mar 15 18:50:17 g1 systemd[1]: Failed to start LSB: GlusterFS server.
Mar 15 18:50:17 g1 systemd[1]: glusterfs-server.service: Unit entered failed state.
Mar 15 18:50:17 g1 systemd[1]: glusterfs-server.service: Failed with result 'exit-code'.

当我删除它时,一切都开始正常:

$ sudo rm -rf secure-access 
$ sudo systemctl restart glusterfs-server.service
$ sudo systemctl status glusterfs-server.service
● glusterfs-server.service - LSB: GlusterFS server
   Loaded: loaded (/etc/init.d/glusterfs-server; bad; vendor preset: enabled)
   Active: active (running) since Wed 2017-03-15 18:53:15 CDT; 2s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 6482 ExecStop=/etc/init.d/glusterfs-server stop (code=exited, status=0/SUCCESS)
  Process: 6552 ExecStart=/etc/init.d/glusterfs-server start (code=exited, status=0/SUCCESS)
    Tasks: 7
   Memory: 12.8M
      CPU: 2.306s
   CGroup: /system.slice/glusterfs-server.service
           └─6560 /usr/sbin/glusterd -p /var/run/glusterd.pid

Mar 15 18:53:13 g1 systemd[1]: Starting LSB: GlusterFS server...
Mar 15 18:53:13 g1 glusterfs-server[6552]:  * Starting glusterd service glusterd
Mar 15 18:53:15 g1 glusterfs-server[6552]:    ...done.
Mar 15 18:53:15 g1 systemd[1]: Started LSB: GlusterFS server.

我感觉问题源于服务器和客户端上的 CA 相同。正如我在文档中读到的,来自服务器和客户端的证书被连接并分发到服务器,而客户端只接收来自服务器的连接证书。目前,客户端正在使用一个 CA,它有自己的证书和第二台服务器的证书。所以也许这就是问题所在。但我有点怀疑,因为即使重新启动服务器上的 glusterd 服务也会因同样的原因而失败,而在这些情况下,CA 应该没问题。

另外,我是否可以通过使用 ssh 隧道来解决这个问题,以处理 glusterd 端口上的所有流量?因此,在这种情况下,我在盒子上为 gluster 打开了 4 个端口,另外在客户端上打开了 ssh/22:

sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 10.13.13.201 --dport 24007:24008 -j ACCEPT
sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 10.13.13.202 --dport 24007:24008 -j ACCEPT
sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 10.13.13.201 --dport 49152:49153 -j ACCEPT
sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 10.13.13.202 --dport 49152:49153 -j ACCEPT

我该如何通过 ssh 隧道解决端口 49152-3 和 24007-8 上的所有串扰?

您对这里发生的事情有什么看法?Marty

答案1

发现错误!

for f in *key; do
 cat $f >> gluster.ca;
done;

我应该连接 PEM。

对于我来说,这很麻烦,特别是对于这个社区来说。显然,这是一种小菜一碟的情况,我花了太多时间研究代码,却无法清楚地看到错误。我最终花了几个小时来解决一个简单的错误,如果至少有一双额外的眼睛来发现问题,可能会非常有帮助。这部分是这个论坛的意义所在,对吗?说实话,如果这个论坛上没有人能解决这个问题和/或拒绝提供帮助,那么来这里还有什么意义呢?

也许我只是需要发泄。前几天有人拿走了我的减压球。

相关内容