Skip to content
Snippets Groups Projects
Commit 72ee7dac authored by Jeffrey Zhang's avatar Jeffrey Zhang Committed by Jeffrey Zhang
Browse files

Support multi local chrony servers

In the old implementation, if there is no external ntp server, only one
local chrony server is supported. If multi chrony-server is configured,
chrony client can not sync with them.

In the new implementation
* use VIP to connect chrony-server, which ensure multi local chrony
  servers are supported.
* chrony servers depend on VIP. So chrony-server group should be
  the same with haproxy group.
* prevent chrony client sync from itself.
* Change owner to chrony:kolla for chrony log folder
* fix keysfile path
* use chrony user for centos and ubuntu image
* fix permission issue for /var/lib/chrony folder

Closes-Bug: #1705200
Change-Id: I6e85fda9824b5ddc7a96895425c5932a3566c27e
parent eab8efe1
No related branches found
No related tags found
No related merge requests found
...@@ -21,7 +21,7 @@ localhost ansible_connection=local ...@@ -21,7 +21,7 @@ localhost ansible_connection=local
# You can explicitly specify which hosts run each project by updating the # You can explicitly specify which hosts run each project by updating the
# groups in the sections below. Common services are grouped together. # groups in the sections below. Common services are grouped together.
[chrony-server:children] [chrony-server:children]
control haproxy
[chrony:children] [chrony:children]
network network
......
...@@ -41,7 +41,7 @@ monitoring ...@@ -41,7 +41,7 @@ monitoring
# You can explicitly specify which hosts run each project by updating the # You can explicitly specify which hosts run each project by updating the
# groups in the sections below. Common services are grouped together. # groups in the sections below. Common services are grouped together.
[chrony-server:children] [chrony-server:children]
control haproxy
[chrony:children] [chrony:children]
control control
......
{% for host in groups['chrony-server'] %} {% set keyfile = '/etc/chrony.keys' if kolla_base_distro in ['centos', 'oraclelinux', 'redhat'] else '/etc/chrony/chrony.keys' %}
{% if inventory_hostname != host %}
server {{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }} iburst server {{ kolla_internal_vip_address }} iburst
{% endif %} {# NOTE(jeffrey4l): external_ntp_servers may be None here #}
{% endfor %} {% if external_ntp_servers %}
{% for ntp_server in external_ntp_servers %} {% for ntp_server in external_ntp_servers %}
server {{ ntp_server }} iburst server {{ ntp_server }} iburst
{% endfor %} {% endfor %}
{% endif %}
user chrony
keyfile /etc/chrony/chrony.keys keyfile {{ keyfile }}
commandkey 1 commandkey 1
...@@ -26,13 +29,16 @@ dumpdir /var/lib/chrony ...@@ -26,13 +29,16 @@ dumpdir /var/lib/chrony
{% if inventory_hostname in groups['chrony-server'] %} {% if inventory_hostname in groups['chrony-server'] %}
allow all allow all
# prevent chrony sync from self
deny {{ kolla_internal_vip_address }}
deny {{ api_interface_address }}
local stratum 10 local stratum 10
{% else %} {% else %}
port 0 port 0
deny all deny all
{% endif %} {% endif %}
bindaddress {{ api_interface_address }} bindaddress {{ kolla_internal_vip_address }}
logchange 0.5 logchange 0.5
......
...@@ -7,5 +7,17 @@ ...@@ -7,5 +7,17 @@
"owner": "chrony", "owner": "chrony",
"perm": "0600" "perm": "0600"
} }
],
"permissions": [
{
"path": "/var/log/kolla/chrony",
"owner": "chrony:kolla",
"recurse": true
},
{
"path": "/var/lib/chrony",
"owner": "chrony:chrony",
"recurse": true
}
] ]
} }
---
upgrade:
- |
chrony server high available is implemented. And it depends on VIP now.
chrony-server group is moved to network node in default and must be the
same with haproxy group.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment