Не удалось запустить патроны - PullRequest
0 голосов
/ 31 мая 2018

Я следовал этому руководству: https://linode.com/docs/databases/postgresql/create-a-highly-available-postgresql-cluster-using-patroni-and-haproxy/, чтобы настроить высокодоступный кластер PostgreSQL с использованием Patroni и HAProxy.

Но когда я пытаюсь запустить patroni, я получаю эту ошибку:

ubuntu@sudo patroni /etc/patroni.yml 
2018-05-31 09:49:37,159 INFO: Failed to import patroni.dcs.consul
2018-05-31 09:49:37,166 INFO: Selected new etcd server http://privateetcdIP:2379
2018-05-31 09:49:37,173 INFO: Lock owner: None; I am postgresqlm
2018-05-31 09:49:37,175 INFO: trying to bootstrap a new cluster
pg_ctl: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will
own the server process.
2018-05-31 09:49:37,185 INFO: removing initialize key after failed attempt to bootstrap the cluster
2018-05-31 09:49:37,673 INFO: Lock owner: None; I am postgresqlm
Traceback (most recent call last):
  File "/usr/local/bin/patroni", line 9, in <module>
    load_entry_point('patroni==1.4.4', 'console_scripts', 'patroni')()
  File "/usr/local/lib/python2.7/dist-packages/patroni/__init__.py", line 176, in main
    return patroni_main()
  File "/usr/local/lib/python2.7/dist-packages/patroni/__init__.py", line 145, in patroni_main
    patroni.run()
  File "/usr/local/lib/python2.7/dist-packages/patroni/__init__.py", line 114, in run
    logger.info(self.ha.run_cycle())
  File "/usr/local/lib/python2.7/dist-packages/patroni/ha.py", line 1164, in run_cycle
    info = self._run_cycle()
  File "/usr/local/lib/python2.7/dist-packages/patroni/ha.py", line 1077, in _run_cycle
    return self.post_bootstrap()
  File "/usr/local/lib/python2.7/dist-packages/patroni/ha.py", line 976, in post_bootstrap
    self.cancel_initialization()
  File "/usr/local/lib/python2.7/dist-packages/patroni/ha.py", line 971, in cancel_initialization
    raise PatroniException('Failed to bootstrap cluster')

Конфигурация /etc/patroni.yml:

scope: postgres
namespace: /db/
name: postgresqlm

restapi:
    listen: privateIPoffirstnode:8008
    connect_address: privateIPoffirstnode:8008

etcd:
    host: privateIPofetcd:2379

bootstrap:
    dcs:
        ttl: 30
        loop_wait: 10
        retry_timeout: 10
        maximum_lag_on_failover: 1048576
        postgresql:
            use_pg_rewind: true
            max_connections: 100

    initdb:
    - encoding: UTF8
    - data-checksums

    pg_hba:
    - host replication replicator 127.0.0.1/32 md5
    - host replication replicator privateIPoffirstnode/0 md5
    - host replication replicator privateIPofsecondnode/0 md5
    - host replication replicator privateIPofthirdnode/0 md5
    - host all all 0.0.0.0/0 md5

    users:
        admin:
            password: admin
            options:
                - createrole
                - createdb

postgresql:
    listen: privateIPoffirstnode:5432
    connect_address: privateIPoffirstnode:5432
    data_dir: /data/patroni
    pgpass: /tmp/pgpass
    bin_dir: /usr/lib/postgresql/9.5/bin
    authentication:
        replication:
            username: replicator
            password: rep-pass
        superuser:
            username: postgres
            password: '12345'
    parameters:
        unix_socket_directories: '.'

tags:
    nofailover: false
    noloadbalance: false
    clonefrom: false
    nosync: false

Конфигурация /etc/systemd/system/patroni.service:

[Unit]
Description=Runners to orchestrate a high-availability PostgreSQL
After=syslog.target network.target

[Service]
Type=simple

User=postgres
Group=postgres

ExecStart=/usr/local/bin/patroni /etc/patroni.yml

KillMode=process

TimeoutSec=30

Restart=no

[Install]
WantedBy=multi-user.targ

Конфигурация etcd:

ETCD_LISTEN_PEER_URLS="http://privateIPofetcd:2380"

ETCD_LISTEN_CLIENT_URLS="http://localhost:2379,http://privateIPofetcd:2379"

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://privateIPofetcd:2380"

ETCD_INITIAL_CLUSTER="etcd0=http://privateIPofetcd:2380,"

ETCD_ADVERTISE_CLIENT_URLS="http://privateIPofetcd:2379"

ETCD_INITIAL_CLUSTER_TOKEN="cluster1"

ETCD_INITIAL_CLUSTER_STATE="new"

Конечно, у меня есть реальные ips в privateIPoffirstnode, privateIPofsecondnode и т. Д.

Итак, кто-нибудь знает, что означает эта ошибка?

1 Ответ

0 голосов
/ 01 июня 2018

Я думаю, что ответ очевиден.Если вы запустите patroni с sudo, он будет работать от имени пользователя root, и это именно то сообщение об ошибке, которое вы получите.

Почему бы вам не запустить его с помощью systemctl?Ваш /etc/systemd/system/patroni.service правильно настроил User, который не root.

...