6.5.4.3 Смена адреса VIP

Могут возникать ситуации, при которых требуется высвободить занятый IP-адрес, назначенный как VIP (точка входа в облачный контроллер). Для смены адреса VIP потребуется выполнить специальный скрипт (change_VIP.sh), на всех УУ стенда (исходный текст – в конце раздела).

Для изменения VIP-адреса в Pacemaker подключитесь к root@control1 и выполните команду:

pcs resource update management_net_vip ip=NEW_IP

Проверьте, что в /etc/ не осталось файлов конфигураций, содержащих старый VIP-адрес, и появился новый (root@control1):

grep -rnw '/etc/' -e 'OLD_IP'

# root@control1
grep -rnw '/etc/' -e 'NEW_IP'

6.5.4.3.1 Возможные проблемы

Не отвечает служба Nova.

В логе /var/log/nova/nova-api.log ошибка:

«SQL connection failed. -3 attempts left.: oslo_db.exception.DBConnectionError: (pymysql.err.OperationalError) (2003, «Can’t connect to MySQL server on „10.55.13.9“ ([Errno 113] EHOSTUNREACH)») «

Решение:

подключиться к БД (nova-api) и заменить следующее значение в таблице cell_mappings (Рис. 6.42).

../_images/Nova_API.png

Рис. 6.42 Замена (в таблице БД cell_mappings)

6.5.4.3.2 Исходный текст скрипта (change_VIP.sh)

#!/bin/bash


#old_ip=$1
#new_ip=$2

read -p "Введите старый VIP-адрес: " old_ip
read -p "Введите новый VIP-адрес: " new_ip

###files=(/etc/hosts /etc/haproxy/haproxy.cfg)
files=(/etc/hosts /etc/haproxy/haproxy.cfg /etc/keystone/keystone.conf /etc/glance/glance-api.conf \
   /etc/cinder/cinder.conf /etc/neutron/neutron.conf /etc/nova/nova.conf \
   /etc/placement/placement.conf /etc/gnocchi/gnocchi.conf /etc/heat/heat.conf \
   /etc/tionix/tionix.yaml /etc/tionix/vdi_server.yaml /etc/sysconfig/memcached \
   /etc/openstack-dashboard/local_settings /etc/ceilometer/ceilometer.conf \
   /etc/glance/glance-registry.conf)

## Проверка того, что IPv4-адреса введены корректно
echo -e "\nПроверка введенных адресов на корректность: \n"
for ip in $old_ip $new_ip; do

if expr "$ip" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$' >/dev/null; then
  IFS=.
  set $ip
  for quad in 1 2 3 4; do
    if eval [ \$$quad -gt 255 ]; then
       echo "Проверка IPv4 адреса прошла неуспешно - ($ip)"
       exit 1
fi
done

echo "Проверка IPv4 адреса прошла успешно - ($ip)"

else

echo "Проверка IPv4 адреса прошла неуспешно - ($ip)"
exit 1
fi

done

## Замена IPv4-адреса в файлах
IFS=' '
for file in ${files[@]}; do

    echo -e "\nИзменение файла: ${file}"
    sed -i "s/${old_ip}/${new_ip}/gi" $file || break
    echo -e "${file} был изменен"

done