解析rancher-metadata
Confd的配置有两种,一种为Confd资源配置文件,默认路径为“/etc/confd/conf.d”目录,另一种为配置模板文件,默认路径为“/etc/confd/templates”。
其中“src”为指定模板文件名称(默认到路径/etc/confd/templates中查找);“dest”指定生成的Haproxy配置文件路径;“keys”指定关联Etcd中key的URI列表;“reload_cmd”指定服务重载的命令。以galera-conf的配置为例:
#/etc/confd/conf.d/galera.toml
[template]
src="galera.cnf.tmpl"
dest="/etc/mysql/conf.d/001-galera.cnf"
keys = [
"/self"
]
#/etc/confd/templates/galera.cnf.tmpl
[mysqld]
server-id = {{getv "/self/container/create_index"}}
log-bin = /var/log/mysql/mariadb-bin.index
bind-address = {{getv "/self/container/primary_ip"}}
max_connections = 1000
report_host = {{getv "/self/container/name"}}
wsrep_node_name = {{getv "/self/container/name"}}
wsrep_cluster_name="{{getv "/self/stack/name"}}"
# User supplied configs
{{if exists "/self/service/metadata/mysqld"}}
{{getv "/self/service/metadata/mysqld"}}
{{end}}
我们可以通过curl来模拟confd-getv的取值结果,比如:
$ curl http://rancher-metadata/latest/self/container/primary_ip
10.42.106.51
$ curl http://rancher-metadata/latest/self/service/metadata/mysqld
innodb_file_per_table = 1
innodb_autoinc_lock_mode=2
query_cache_size=0
query_cache_type=0
innodb_flush_log_at_trx_commit=0
binlog_format=ROW
default-storage-engine=innodb
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_provider_options="gcache.size = 2G"
wsrep_sst_method=mysqldump
wsrep_sst_auth=root:123456
progress=1
而这些metadata是如何配置进去的呢?目前提供的方式就是写在rancher-compose的文件中,比如galera的:
galera:
scale: 3
metadata:
mysqld: |
innodb_file_per_table = 1
innodb_autoinc_lock_mode=2
query_cache_size=0
query_cache_type=0
innodb_flush_log_at_trx_commit=0
binlog_format=ROW
default-storage-engine=innodb
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_provider_options="gcache.size = 2G"
wsrep_sst_method=mysqldump
wsrep_sst_auth=root:${mysql_root_password}
progress=1