Дублирующий сервер ISP Go
Установите второй (подчиненный) сервер SkyDNS ISP Go, аналогично установке первого (главного) сервера. При этом isp-go-api должен быть запущен только на главном сервере и все запросы должны идти к нему. Чтобы запретить запуск isp-go-api на подчиненном сервере и проксирование запросов на него, выполните команды:
service isp-go-api stop update-rc.d isp-go-api disable rm -f /etc/nginx/sites-enabled/isp-go-api service nginx restart
Настройте репликацию между серверами Redis. Для этого разрешите главному серверу слушать на сетевых адресах, отличных от 127.0.0.1, при помощи настройки параметра bind в /etc/redis/redis.conf. Этот параметр надо выставить в 0.0.0.0
bind 0.0.0.0
или, если есть особые причины, в IP-адрес или адреса сервера.
bind 127.0.0.1 192.168.5.100 10.0.0.100
Для применения настроек перезапустите Redis:
service redis-server restart
Внимание: порт tcp/6379, на котором слушает Redis, закройте средствами iptables, оставив только доступ с loopback-интерфейса (это нужно для isp-go-dnsproxy и isp-go-blockpage) и с подчиненного сервера. Атакующий, имея доступ к redis-серверу по tcp, смог бы изменить любую настройку любого пользователя, или, что еще хуже, заставить Redis занять всю доступную память.
Рассмотрим пример, когда главный сервер имеет IP-адрес 192.168.5.100, а подчиненный - 192.168.5.200. В этом случае безопасность на главном сервере обеспечивается таким правилом iptables:
iptables -A INPUT ! -s 192.168.5.200 -p tcp --dport 6379 ! -i lo -j DROP
Для сохранения этого правила, чтобы оно восстановилось после перезагрузки, выполните команду:
service netfilter-persistent save
В настройках Redis на подчиненном сервере в файле /etc/redis/redis.conf в конце укажите:
slaveof <masterip> <masterport>
и перезапустите Redis:
service redis-server restart