Firewall configurations, disable firewalld for quick in this example, you might want add ports through firewall.

systemctl stop firewalld
systemctl disable firewalld

Then make nodes know each other

vim /etc/hosts
192.168.0.227 link1
192.168.0.228 link2

The emqx.conf is config of emqx, content(default ) is huge and you can copy it from flollowing site:

emqx/emqx.conf at main-v4.3 · emqx/emqx
An Open-Source, Cloud-Native, Distributed MQTT Message Broker for IoT. - emqx/emqx.conf at main-v4.3 · emqx/emqx

Or you can copy it with docker:

docker run -d --name emqx --rm emqx/emqx
docker cp emqx:/opt/emqx/etc .
docker rm -f emqx

Then start emqx container on each node(change the highlight line according to you nodes):

docker run -tid --name emqx --restart=always --network host \
    -e EMQX_NAME=link1 \
    -e EMQX_HOST=192.168.0.227 \
    -e EMQX_LISTENER__TCP__EXTERNAL=1883 \
    -e EMQX_WAIT_TIME=30 \
    -e EMQX_JOIN_CLUSTER="link1@192.168.0.227" \
    -e EMQX_CLUSTER__NAME=emqxcl \
    -e EMQX_CLUSTER__DISCOVERY=static \
    -e EMQX_CLUSTER__STATIC__SEEDS="link1@192.168.0.227,link2@192.168.0.228" \
    emqx/emqx

Check running status

docker logs -f emqx
cluster.discovery = "static"
cluster.name = "emqxcl"
cluster.static.seeds = "link1@192.168.0.227,link2@192.168.0.228"
listener.ssl.external.acceptors = "32"
listener.ssl.external.max_connections = "102400"
listener.tcp.external = "1883"
listener.tcp.external.acceptors = "64"
listener.tcp.external.max_connections = "1024000"
listener.ws.external.acceptors = "16"
listener.ws.external.max_connections = "102400"
listener.wss.external.acceptors = "16"
listener.wss.external.max_connections = "102400"
log.to = "console"
node.max_ets_tables = "2097152"
node.max_ports = "1048576"
node.name = "link1@192.168.0.227"
node.process_limit = "2097152"
rpc.port_discovery = "manual"
Starting emqx on node link1@192.168.0.227
Start http:management listener on 8081 successfully.
Start http:dashboard listener on 18083 successfully.
Start mqtt:tcp:internal listener on 127.0.0.1:11883 successfully.
Start mqtt:tcp:external listener on 0.0.0.0:1883 successfully.
Start mqtt:ws:external listener on 0.0.0.0:8083 successfully.
Start mqtt:ssl:external listener on 0.0.0.0:8883 successfully.
Start mqtt:wss:external listener on 0.0.0.0:8084 successfully.
EMQ X Broker 4.3.8 is running now!

Check cluster status via

docker exec -it emqx /bin/sh /opt/emqx/bin/emqx_ctl cluster status
Cluster status: #{running_nodes =>
                      ['link1@192.168.0.227','link2@192.168.0.228'],
                  stopped_nodes => []}

Open webbrowser, access site

http://link1.const.cc:18083
user: admin
password: public