Перейти к содержанию

Миграция PROD на новый IP

ARCHIVED

Это историческая одноразовая процедура миграции, выполненная в 2025 году. Учётные данные удалены из соображений безопасности.

Инструкции по смене IP адреса на сервере KM-proxy01

ПО ВСЕМ ВОПРОСАМ КО МНЕ @nkttlpn в телеграм

Запрашиваем новый IP у @muhamuh в телеграм

первым делом залетаем по ssh (добавлен мой ключ и ключ Михаила)

ssh root@212.70.189.60

🔧 1. Изменение IP в nginx конфигурациях

ПОСЛЕ ЭТОГО ЛЯЖЕТ ВЕСЬ ПРОД

Обновление server_name в nginx:

# Подключиться к серверу
ssh root@212.70.189.60 -p 2255

# Создать бэкап nginx

docker cp nginx:/etc/nginx/conf.d/vpn.conf /tmp/vpn.conf.backup

docker cp nginx:/etc/nginx/conf.d/ura.conf /tmp/ura.conf.backup

# Обновить IP в конфигурациях
sed 's/139\.45\.205\.66/212.70.189.60/g' /tmp/vpn.conf.backup > /tmp/vpn.conf.new

sed 's/139\.45\.205\.66/212.70.189.60/g' /tmp/ura.conf.backup > /tmp/ura.conf.new

# Пересоздать nginx контейнер
docker stop nginx && docker rm nginx

docker run -d --name nginx -p 80:80 -p 443:443 -p 22:22 -p 5000-5020:5000-5020 nginx:latest nginx -g 'daemon off;'

# Восстановить конфигурации
docker cp /root/nginx-backup-20251023-013507.tar.gz nginx:/tmp/
docker exec nginx tar -xzf /tmp/nginx-backup-20251023-013507.tar.gz -C /
docker cp /tmp/vpn.conf.new nginx:/etc/nginx/conf.d/vpn.conf

docker cp /tmp/ura.conf.new nginx:/etc/nginx/conf.d/ura.conf

docker exec nginx mkdir -p /opt/nginx/logs

docker restart nginx

2. Изменение IP через netplan

ПОСЛЕ ЭТОГО ОТВАЛИТСЯ SSH, ДЕРЖИМ ВЕБ КОНСОЛЬ ПОД РУКОЙ

Обновление netplan конфигурации:

# Создать бэкап текущей конфигурации
cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.backup-$(date +%Y%m%d-%H%M%S)

# Создать новую конфигурацию
cat > /etc/netplan/00-installer-config.yaml << 'EOF'
# This is the network config written by 'subiquity'
network:
  ethernets:
    ens32:
      dhcp4: no
      addresses: [10.99.87.2/24]
      nameservers:
        addresses: [10.99.87.1, 8.8.8.8]
        search: []
    ens33:
      dhcp4: no
      addresses: [212.70.189.60/27]
      routes:
        - to: default
          via: 212.70.189.1
      nameservers:
        addresses: [8.8.8.8]
        search: []
  version: 2

EOF

# Применить конфигурацию
netplan apply

3. Проверка доступности выхода в интернет в веб-консоли

Веб-консоль: https://cloud.avenija-vp.lv/ui/

Доступ к веб-консоли и серверу — см. Vaultwarden

ТАЧКА: KM-proxy01

Команды для диагностики:

# 1. Проверить сетевые интерфейсы
ip addr show

# 2. Проверить маршрутизацию
ip route show

# 3. Проверить доступность интернета
ping -c 3 8.8.8.8

# 4. Проверить доступность gateway

ping -c 3 212.70.189.1

# 5. Проверить что новый IP работает
ping -c 3 212.70.189.60

# 6. Проверить SSH на новом IP

ssh root@212.70.189.60 -p 2255 "echo 'New IP works'"

Если нет доступа в интернет:

# Восстановить старый gateway

sudo ip route add default via 139.45.205.65 dev ens35

# Проверить что интернет работает
ping -c 3 8.8.8.8

4. Если все ок и можно подключиться по ssh к новому хосту

Меняем DNS в GoDaddy

Запрашиваем доступ у Максима Кузьмина (@sowner111) или у Кости к аккаунту

https://account.godaddy.com/ заходим сюда

меняем все DNS Shiva VPN, которые были 139.45.205.65 на новый IP\n\nпосле этого все должно заработать

5. Откат на бэкапы

Откат nginx:

# Остановить текущий nginx

docker stop nginx && docker rm nginx

# Восстановить из бэкапа
docker run -d --name nginx -p 80:80 -p 443:443 -p 22:22 -p 5000-5020:5000-5020 nginx:latest nginx -g 'daemon off;'
docker cp /root/nginx-backup-20251023-013507.tar.gz nginx:/tmp/
docker exec nginx tar -xzf /tmp/nginx-backup-20251023-013507.tar.gz -C /
docker exec nginx mkdir -p /opt/nginx/logs

docker restart nginx

# Проверить что работает
curl -I http://139.45.205.66

Откат netplan (переключение на старый интерфейс):

# Восстановить старую конфигурацию
sudo cp /etc/netplan/00-installer-config.yaml.backup /etc/netplan/00-installer-config.yaml

# Или создать конфигурацию со старым IP (можно через nano или vim поменять на старый 139.45.205.66 и шлюз тоже)

cat > /etc/netplan/00-installer-config.yaml << 'EOF'
# This is the network config written by 'subiquity'
network:
  ethernets:
    ens32:
      dhcp4: no
      addresses: [10.99.87.2/24]
      nameservers:
        addresses: [10.99.87.1, 8.8.8.8]
        search: []
    ens35:
      dhcp4: no
      addresses: [139.45.205.66/27]
      routes:
        - to: default
          via: 139.45.205.65
      nameservers:
        addresses: [8.8.8.8, 87.245.235.192]
        search: []
  version: 2

EOF

# Применить конфигурацию
netplan apply

# Проверить что SSH работает
ssh root@139.45.205.66 -p 2255 "echo 'Old IP works'"

Важные замечания:

  1. Всегда создавайте бэкапы перед изменениями
  2. Проверяйте доступность gateway перед сменой IP
  3. Используйте веб-консоль для критических изменений
  4. Тестируйте новый IP перед отключением старого
  5. Имейте план отката на случай проблем

Последовательность действий:

  1. Создать бэкапы (nginx + netplan)
  2. Обновить nginx конфигурации
  3. Изменить netplan конфигурацию
  4. Проверить доступность через веб-консоль
  5. Изменить DNS в GoDaddy (регистратор)
  6. Протестировать новый IP
  7. При необходимости откатиться на бэкапы