docker_cluster
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
docker_cluster [2024/10/20 23:28] – neoon | docker_cluster [2024/10/21 15:29] (current) – neoon | ||
---|---|---|---|
Line 9: | Line 9: | ||
apt-get install gpg -y | apt-get install gpg -y | ||
- | curl https:// | + | curl https:// |
- | | + | |
DEBID=$(grep ' | DEBID=$(grep ' | ||
DEBVER=$(grep ' | DEBVER=$(grep ' | ||
DEBARCH=$(dpkg --print-architecture) | DEBARCH=$(dpkg --print-architecture) | ||
echo "deb [signed-by=/ | echo "deb [signed-by=/ | ||
- | apt-get update && apt-get install glusterfs-server | + | apt-get update && apt-get install glusterfs-server |
**3**. Edit / | **3**. Edit / | ||
This will prevent glusterfs from getting exposed to the dangerous interwebs. | This will prevent glusterfs from getting exposed to the dangerous interwebs. | ||
option transport.socket.bind-address 10.0.X.1 | option transport.socket.bind-address 10.0.X.1 | ||
+ | | ||
+ | rpcbind does listen on the network and we don't need it, so lets get rid of it. | ||
+ | apt-get remove rpcbind -y | ||
**4**. Enable GlusterFS | **4**. Enable GlusterFS | ||
- | systemctl start glusterd | + | systemctl start glusterd |
- | | + | |
**5**. Peer with your GlusterFS nodes | **5**. Peer with your GlusterFS nodes | ||
Line 34: | Line 35: | ||
gluster peer status | gluster peer status | ||
- | **7.** | + | **7.** |
- | mkdir -p / | + | mkdir -p / |
+ | |||
+ | **8.** Create your first volume for Docker | ||
gluster volume create docker replica 3 10.0.1.1:/ | gluster volume create docker replica 3 10.0.1.1:/ | ||
+ | gluster volume start docker | ||
- | **8**. Mount your first volume | + | **9**. Mount your first volume |
- | mkdir -p / | + | |
mount.glusterfs 10.0.X.1:/ | mount.glusterfs 10.0.X.1:/ | ||
| | ||
- | **9**. Make the mount boot ready | + | **10**. Make the mount boot ready |
[Unit] | [Unit] | ||
Line 59: | Line 62: | ||
Copy this to / | Copy this to / | ||
- | **10**. Enable the mount service | + | **11**. Enable the mount service |
systemctl enable mounts | systemctl enable mounts | ||
| | ||
- | **11**. You may have to edit the GlusterFS systemd file to prevent a race condition with your VPN. \\ | + | **12**. You may have to edit the GlusterFS systemd file to prevent a race condition with your VPN. \\ |
GlusterFS will fail to start if your VPN isn't running already. | GlusterFS will fail to start if your VPN isn't running already. | ||
Line 72: | Line 75: | ||
Profit! Next reboot GlusterFS should start up fine. | Profit! Next reboot GlusterFS should start up fine. | ||
- | **12**. Install Docker | + | **13**. Install Docker |
# Add Docker' | # Add Docker' | ||
Line 85: | Line 88: | ||
apt-get update && apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y | apt-get update && apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y | ||
- | **13**. Init the Swarm on the first Node | + | **14**. Init the Swarm on the first Node |
docker swarm init --advertise-addr 10.0.1.1 --listen-addr=10.0.1.1 | docker swarm init --advertise-addr 10.0.1.1 --listen-addr=10.0.1.1 | ||
advertise-addr will only advertise the swarm inside our VPN network | advertise-addr will only advertise the swarm inside our VPN network | ||
- | **14**. Join other Nodes | + | **15**. Join other Nodes |
docker swarm join --token whateverthattokenis 10.0.1.1: | docker swarm join --token whateverthattokenis 10.0.1.1: | ||
docker swarm join --token whateverthattokenis 10.0.1.1: | docker swarm join --token whateverthattokenis 10.0.1.1: | ||
listen-addr will force swarm to bind to your local VPN | listen-addr will force swarm to bind to your local VPN | ||
- | **15**. Promote the other Nodes to archive 100% True HA | + | **16**. Check the Cluster |
+ | docker node ls | ||
+ | |||
+ | **17**. Promote the other Nodes to archive 100% True HA | ||
docker node promote node2 | docker node promote node2 | ||
docker node promote node3 | docker node promote node3 | ||
| | ||
- | **16**. Deploy your first service \\ | + | **18**. Deploy your first service \\ |
In my case it was a ZNC bouncer. \\ | In my case it was a ZNC bouncer. \\ | ||
Had to run the docker container normally to generate the config files. \\ | Had to run the docker container normally to generate the config files. \\ | ||
Line 106: | Line 112: | ||
Lets deploy the service. | Lets deploy the service. | ||
docker service create --mount type=bind, | docker service create --mount type=bind, | ||
+ | The service will get exposed on port 1025 on all nodes. | ||
| | ||
- | **17**. If you run this, on any node. | + | **19**. If you run this, on any node. |
docker node ps $(docker node ls -q) | docker node ps $(docker node ls -q) | ||
| | ||
You should be able to check your container status. | You should be able to check your container status. | ||
+ | **20**. When you reboot the node with your container, the service should be restored in about 60s. |
docker_cluster.1729466914.txt.gz · Last modified: 2024/10/20 23:28 by neoon