Ошибка ожидания postgresql "Не удалось создать сокет IPv6"

Я пытаюсь создать Postgresql 9.1 с горячим резервированием, используя следующие шаги:

  1. Настроил 2 виртуальных машины linux. IP-адрес мастера: 10.10.10.1, IP-адрес резервного устройства: 10.10.10.2. Пинг тест пройден.
  2. Восстановил одну и ту же резервную копию БД на обоих.
  3. Отредактировал pg_hba на мастере. Добавлена ​​строка:

    host   replication   postgres   10.10.10.2/32   md5
    
  4. Отредактировано сообщение Мастера postgresql.conf:

    listen_address = '*'
    wal_level = hot_standby
    max_wal_senders = 3
    
  5. Создан recovery.conf в режиме ожидания:

    standby_mode = 'on'
    primary_conninfo = 'host=10.10.10.1'
    

После добавления recovery.conf мне не удается запустить резервный сервер. В журнале запуска я получаю сообщение об ошибке:

> could not create IPv6 socket

Я что-то пропустил?

2 ответа

Это происходит, когда IPv6 не включен в ядре, но адреса IPv6 объявлены где-то.

Иногда localhost в /etc/hosts обозначает оба 127.0.0.1 (IPv4) и ::1 (IPv6). В этом случае вы можете удалить псевдоним IPv6, чтобы избежать ошибок такого рода.

Сборщик статистики (отдельный процесс, запущенный PostgreSQL) использует жестко запрограммированное имя localhost, так что эта проблема не сможет начать с упомянутым сообщением об ошибке. Однако это не должно помешать запуску самого PostgreSQL.

Если * случается, включают проблемные адреса IPv6, вы можете решить проблему, выбрав в listen_addresses (в любом случае, это хорошая практика):

listen_addresses = 127.0.0.1,10.10.10.1 # добавьте другие интерфейсы, если это необходимо

Чтобы отключить ошибку IPv6, необходимо выполнить следующие шаги.

  1. вставьте следующий код в этот файл (/etc/sysctl.conf)

    net.ipv6.conf.all.disable_ipv6 = 1

  2. В файле postgresql.conf измените адрес прослушивания на 0.0.0.0

    listen_address = '0.0.0.0'

Вот и все и перезапустите сервис postgreSQL.

Другие вопросы по тегам