This is a read-only copy of the MariaDB Knowledgebase generated on 2024-11-17. For the latest, interactive version please visit https://mariadb.com/kb/.

10.4.14 cluster + rsync + ssl

Hello! I am asking to assist to setup MariaDB cluster + State Snapshot Transfers (SSTs) rsync + SSL. There are two servers Mariadb: Centos6 10.4.14 + Centos 7 10.4.14 with identical config files: server.cnf:

[server]
max_connections=350
log-bin=/opt/mysql/binlog/mysql-bin
log-bin-index=/opt/mysql/binlog/mysql-bin.index
max_binlog_size=33554432
binlog-format = 'ROW'
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
datadir=/opt/mysql/datadir
tmpdir=/opt/mysql/tmp
log_error=/opt/mysql/log/mysql.err

[mysqld]
ssl_cert = /etc/my.cnf.d/certs/server-cert.pem
ssl_key = /etc/my.cnf.d/certs/server-key.pem
ssl_ca = /etc/my.cnf.d/certs/ca.pem

[embedded]

[mariadb]

[mariadb-10.4]

# [sst]
#tkey = /etc/my.cnf.d/certs/server-key.pem
#tcert = /etc/my.cnf.d/certs/server-cert.pem

galera.cnf:

[galera]
innodb_doublewrite=1
innodb_flush_log_at_trx_commit=1
bind-address=0.0.0.0
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_address="gcomm://1.1.1.16,1.1.1.15"
wsrep_on=ON
wsrep_cluster_name="cluster"
wsrep_sst_method=rsync
wsrep_node_address="1.1.1.16"
wsrep_node_name="node16"
wsrep_provider_options="socket.ssl_cert=/etc/my.cnf.d/certs/server-cert.pem;socket.ssl_key=/etc/my.cnf.d/certs/server-key.pem;socket.ssl_ca=/etc/my.cnf.d/certs/ca.pem"

The cluster starts with these configuration files. But if you uncomment the lines

[sst]
tkey = /etc/my.cnf.d/certs/server-key.pem
tcert = /etc/my.cnf.d/certs/server-cert.pem

the cluster does not start with message: Centos6:

2020-09-25  7:41:06 1 [Note] WSREP: State transfer required:
        Group state: e330214a-fe78-11ea-9fef-9779040d909c:30
        Local state: 00000000-0000-0000-0000-000000000000:-1
2020-09-25  7:41:06 1 [Note] WSREP: Server status change connected -> joiner
2020-09-25  7:41:06 1 [Note] WSREP: wsrep_notify_cmd is not defined, skipping notification.
2020-09-25  7:41:06 0 [Note] WSREP: Running: 'wsrep_sst_rsync --role 'joiner' --address '1.1.1.16' --datadir '/opt/mysql/datadir/' --parent '31813' --binlog '/opt/mysql/binlog/mysql-bin' --binlog-index '/opt/mysql/binlog/mysql-bin.index' --mysqld-args --basedir=/usr --datadir=/opt/mysql/datadir --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so --wsrep_on=ON --log-error=/opt/mysql/log/mysql.err --pid-file=/opt/mysql/datadir/centos610.pid --socket=/opt/mysql/mysql.sock --wsrep_start_position=e330214a-fe78-11ea-9fef-9779040d909c:24'
2020-09-25  7:41:06 0 [Note] WSREP: Joiner monitor thread started to monitor
2020.09.25 07:41:06 LOG4[31882:139836024436672]: Diffie-Hellman initialization failed
2020-09-25  7:41:06 1 [Note] WSREP: Prepared SST request: rsync|1.1.1.16:4444/rsync_sst
2020-09-25  7:41:06 1 [Note] WSREP: ####### IST uuid:00000000-0000-0000-0000-000000000000 f: 0, l: 30, STRv: 3
2020-09-25  7:41:06 1 [Note] WSREP: IST receiver addr using ssl://1.1.1.16:4568
2020-09-25  7:41:06 1 [Note] WSREP: IST receiver using ssl
2020-09-25  7:41:06 1 [Note] WSREP: Prepared IST receiver for 0-30, listening at: ssl://1.1.1.16:4568
2020-09-25  7:41:06 0 [Note] WSREP: Member 0.0 (node16) requested state transfer from '*any*'. Selected 1.0 (node15)(SYNCED) as donor.
2020-09-25  7:41:06 0 [Note] WSREP: Shifting PRIMARY -> JOINER (TO: 30)
2020-09-25  7:41:06 1 [Note] WSREP: Requesting state transfer: success, donor: 1
2020-09-25  7:41:06 1 [Note] WSREP: Resetting GCache seqno map due to different histories.
2020-09-25  7:41:06 1 [Note] WSREP: GCache history reset: e330214a-fe78-11ea-9fef-9779040d909c:24 -> e330214a-fe78-11ea-9fef-9779040d909c:30
2020-09-25  7:41:06 1 [Note] WSREP: GCache DEBUG: RingBuffer::seqno_reset(): discarded 712 bytes
2020-09-25  7:41:06 1 [Note] WSREP: GCache DEBUG: RingBuffer::seqno_reset(): found 1/2 locked buffers
2020-09-25  7:41:06 0 [Warning] WSREP: 1.0 (node15): State transfer to 0.0 (node16) failed: -255 (Unknown error 255)
2020-09-25  7:41:06 0 [ERROR] WSREP: gcs/src/gcs_group.cpp:gcs_group_handle_join_msg():1178: Will never receive state. Need to abort.
2020-09-25  7:41:06 0 [Note] WSREP: gcomm: terminating thread
2020-09-25  7:41:06 0 [Note] WSREP: gcomm: joining thread
2020-09-25  7:41:06 0 [Note] WSREP: gcomm: closing backend
2020-09-25  7:41:07 0 [Note] WSREP: view(view_id(NON_PRIM,527183aa-a894,2) memb {
        527183aa-a894,0
} joined {
} left {
} partitioned {
        890ce1c9-a7d9,0
})
2020-09-25  7:41:07 0 [Note] WSREP: PC protocol downgrade 1 -> 0
2020-09-25  7:41:07 0 [Note] WSREP: view((empty))
2020-09-25  7:41:07 0 [Note] WSREP: gcomm: closed

Answer Answered by Aleksandr Zabils in this comment.

Fixed. On donor side: in the file /usr/bin/wsrep_sst_rsync (Centos7) change eval rsync

${STUNNEL:+--rsh="$STUNNEL"} \

to

eval rsync ${STUNNEL:+--rsh=\"$STUNNEL\"} \
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.