packetfence7.4集群部署文档

packetfence 7.4集群

1.前提条件

  • 至少3台安装PacketFence服务器
  • 这些服务器都运行RHEL / CentOS 7 / Debian Jessie
  • 这些服务器网卡标识都一样(如 eth0)
  • 这些服务器网络在同一2层网络
  • 服务器禁用IPv6
    • 编辑文件 /etc/sysctl.conf

vim /etc/sysctl.conf

添加下面的行:

net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1

  • 执行下面命令让设置生效

sysctl -p

2.安装

2.1 安装database复制工具

# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

# sed -i 's/enabled = 1/enabled = 0/g' /etc/yum.repos.d/percona-release.repo

# yum install percona-xtrabackup socat --enablerepo=percona-release-x86_64

  • 保证你在/usr/local/pf/conf/cluster.conf 没有配置任何东西。

2.2 安装你集群的第一台服务器

  • 在第一台服务器上,开启packetfence-mariadb,并确保在standalone mode开启

# systemctl start packetfence-mariadb 开启安全安装 # mysql_secure_installation

  • 新建一个用户用于packetfence数据库复制

# mysql -u root -p

mysql> CREATE USER 'pfcluster'@'%' IDENTIFIED BY 'aMuchMoreSecurePassword';

mysql> GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT, SUPER ON *.* TO 'pfcluster'@'%';

mysql> CREATE USER 'pfcluster'@'localhost' IDENTIFIED BY 'aMuchMoreSecurePassword';

mysql> GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT, SUPER ON *.* TO 'pfcluster'@'localhost'; mysql> FLUSH PRIVILEGES;

'aMuchMoreSecurePassword' 只是一个示例,你需要自己定义自己的密码

  • 移除数据库中的空用户

# mysql -u root -p mysql> delete from mysql.user where user = '' ;

mysql> flush privileges;

2.3 服务器配置

  • 确保所有服务器上的接口名字一样
  • 在每台服务器上配置使得服务器能够绑定它们现在还没有配置的ip地址,这样能快速failover。在所有服务器的/etc/sysctl.conf 添加下面内容,然后 sysctl -p 重载。

net.ipv4.ip_nonlocal_bind = 1

  • 取消mariadb默认系统服务,因为packetfence已经提供了

# systemctl disable mariadb

2.4 基础packetfence配置

  • 在第一台服务器上,你应该在配置向导上配置到第7步(Service),保持所有服务stop状态

在配置Network interfaces时,保证在management interface上勾选high availablility

  • 在第一台服务器上重启packetfence的mariadb

# systemctl restart packetfence-mariadb

  • 在其他服务器上,你只需要配置向导到第2步(network interface)。以 vlan enforcement 模式为例,每台服务器的网络接口必须配置,你可以在每台服务器上看到:

在 /etc/sysconfig/network-scripts/

header 2

One Management Interface

ifcfg-YourFirstInterfaceName

One Registration Interface

ifcfg-YourFirstInterfaceName.YourRegistrationVLANID

One Isolation Interface

ifcfg-YourFirstInterfaceName.YourIsolationVLANID

2.5 建立集群

2.5.1 PacketFence配置改变

  • 在第一台服务器上配置更改,在 /usr/local/pf/conf/pf.conf :

[database] host=127.0.0.1

[graphite] db_host=127.0.0.1

[active_active] # Change these 2 values by the credentials you've set when configuring MariaDB above

galera_replication_username=pfcluster

galera_replication_password=aMuchMoreSecurePassword

  • 在 /usr/local/pf/conf/pfconfig.conf :

[mysql] host=127.0.0.1

  • 在 /usr/local/fingerbank/conf/fingerbank.conf :

[mysql] host=127.0.0.1

  • 重载配置,重新启动packetfence-config。你会看到一些cache write错误,但是你可以忽略它们。这些错误只是因为packetfence-config不能连接到数据库而已。

# systemctl restart packetfence-config

# /usr/local/pf/bin/pfcmd configreload hard # systemctl restart packetfence-haproxy

2.5.2 配置cluster.conf

  • 为了新建一个cluster,你需要在第一台服务器的 /usr/local/pf/conf/cluster.conf 配置
  • 在每个命令条目上配置你的主机名,这个例子中是 pf1.example.com
  • 在CLUSTER部分,虚拟ip地址是你集群中服务器所共享的。
  • 在这个例子中,eth0 是management interface,eth1.2 是registration interface,eth1.3是isolation interface。
  • 在第一台服务器上,配置如下:

[CLUSTER]

management_ip=192.168.1.10

[CLUSTER interface eth0] ip=192.168.1.10 type=management,high-availability

[CLUSTER interface eth1.2] ip=192.168.2.10 type=internal

[CLUSTER interface eth1.3] ip=192.168.3.10 type=internal

[pf1.example.com] management_ip=192.168.1.5 [pf1.example.com interface eth0] ip=192.168.1.5 type=management,high-availability mask=255.255.255.0 [pf1.example.com interface eth1.2] enforcement=vlan ip=192.168.2.5 type=internal mask=255.255.255.0 [pf1.example.com interface eth1.3] enforcement=vlan ip=192.168.3.5 type=internal mask=255.255.255.0 [pf2.example.com] management_ip=192.168.1.6 [pf2.example.com interface eth0] ip=192.168.1.6 type=management,high-availability mask=255.255.255.0 [pf2.example.com interface eth1.2] enforcement=vlan ip=192.168.2.6 type=internal mask=255.255.255.0 [pf2.example.com interface eth1.3] enforcement=vlan ip=192.168.3.6 type=internal mask=255.255.255.0 [pf3.example.com] management_ip=192.168.1.7 [pf3.example.com interface eth0] ip=192.168.1.7 type=management,high-availability mask=255.255.255.0 [pf3.example.com interface eth1.2] enforcement=vlan ip=192.168.2.7 type=internal mask=255.255.255.0 [pf3.example.com interface eth1.3] enforcement=vlan ip=192.168.3.7 type=internal mask=255.255.255.0

  • 配置完成后,重载配置并执行一个检查,忽略关于数据库不可用的报错

# /usr/local/pf/bin/pfcmd configreload hard # /usr/local/pf/bin/pfcmd checkup

  • 让packetfence clusting 服务能够开机自启动,在所有服务器上运行下列命令:

systemctl set-default packetfence-cluster

  • 继续在第一台服务器上新建一个mariadb集群

如果集群新建不成功,可能是因为其他服务器上已经运行了MariaDB服务。请确保其他服务器停止运行mariadb服务,只有第一台服务器上有运行mariadb服务(systemctl stop packetfence-mariadb 和 systemctl stop mariadb)。

# systemctl stop packetfence-mariadb

# /usr/local/pf/bin/pfcmd generatemariadbconfig

# /usr/local/pf/sbin/pf-mariadb --force-new-cluster

最后一条命令不会有返回除非你中断它,所以你新开一个终端连接,重新开始运行packetfence服务。

/usr/local/pf/bin/pfcmd service pf restart

2.6 加入其他两台服务器

2.6.1 webservices配置

  • 在第一台服务器的 /usr/local/pf/conf/pf.conf 加入webservices服务的用户名和密码:

[webservices]

user=packet

pass=fence

然后重载配置,重启第一台服务器 httpd.webservices :

# /usr/local/pf/bin/pfcmd configreload hard # /usr/local/pf/bin/pfcmd service httpd.webservices restart

2.6.2 同步其他节点配置

  • 同步节点服务器配置,在要加入的其他服务器上配置(请确保没有任何错误):
    • 192.168.1.5 是要同步服务器的管理IP
    • packet 是你配置主节点的 webservices 用户名
    • fence 是你配置主节点的 webservices 密码

# /usr/local/pf/bin/cluster/sync --from=192.168.1.5 --api-user=packet --api-password=fence

重载配置,并开启该台服务器的webservices

# systemctl restart packetfence-config # /usr/local/pf/bin/pfcmd configreload # /usr/local/pf/bin/pfcmd service haproxy restart # /usr/local/pf/bin/pfcmd service httpd.webservices restart

2.6.3 同步MariaDB

  • 确保第一台服务器MariaDB仍然以 --forces-new-cluster 运行
  • 其他要加入的两台服务器的packetfence-mariadb停止运行
  • 清除这两台服务器的mysql数据,并重启packetfence-mariadb服务

# rm -fr /var/lib/mysql/*

# systemctl restart packetfence-mariadb

  • 检查mariadb同步状态

mysql> show status like 'wsrep%';

  • 所有服务器同步完,中断第一台服务器运行 --force-new-cluster的模式,正常运行mariadb

# systemctl start packetfence-mariadb

2.6.4 启动packetfence服务

  • 在其他两台服务器上启动pf服务

# /usr/local/pf/bin/pfcmd service pf start

  • 禁用每台服务器上的packetfence配置向导:

# /usr/local/pf/bin/pfcmd version > /usr/local/pf/conf/currently-at

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章