docker上的多个aerospike节点

我想有一个aerospike-server节点的多个实例,所以负载均衡,因为我打了很多请求的服务器,我得到一个错误说'错误代码22:操作不允许在这个时候'。

我假设有更多的aerospike-server节点,我可以减轻一个节点上的负载,从而完成更多的操作? 我不确定从哪里开始。

我需要一个主机上的所有本地节点。 任何帮助将是伟大的。

我的networking知识不是很好,所以请原谅我

我的DockerFile:

FROM aerospike/aerospike-server MAINTAINER "xxxx" ADD aerospike.conf /etc/aerospike/ 

泊坞窗,compose.yml

 version: "3" services: aerospike-server: image: amc container_name: aerospike-server ports: - "3000:3000" - "3001:3001" - "3002:3002" - "3003:3003" aerospike-amc: image: mrbar42/aerospike-amc container_name: aerospike-amc ports: - "8081:8081" 

aerospike.confnetworking节

 network { service { address any port 3000 # Uncomment the following to set the `access-address` parameter to the # IP address of the Docker host. This will the allow the server to correctly # publish the address which applications and other nodes in the cluster to # use when addressing this node. # access-address <IPADDR> } heartbeat { # mesh is used for environments that do not support multicast mode mesh port 3002 # use asinfo -v 'tip:host=<ADDR>;port=3002' to inform cluster of # other mesh nodes interval 150 timeout 10 } fabric { # address any port 3001 } info { # address any port 3003 } } 

您可以使用多播心跳configuration,并在一台机器上运行一个小型的脉动节点集群。

以下是我使用的步骤:

1)从aerospike回购获取最新的Dockerfile

git clone https://github.com/aerospike/aerospike-server.docker.git

2)修改心跳部分并使用多播:

  heartbeat { mode multicast multicast-group 239.1.99.2 port 9918 interval 150 timeout 10 } 

3)用docker-compose或自定义脚本构build镜像和集群。

我使用了下面的自定义makecluster.sh bash脚本:

 cat makecluster.sh docker build -t "aerospike/aerospike-server" . for i in {3..9} ; do echo $i; docker stop aerospike${i} docker rm aerospike${i} docker run -tid --name aerospike${i} -p ${i}000:3000 -p ${i}001:3001 -p ${i}002:3002 -p ${i}003:3003 aerospike/aerospike-server done; 

并运行:

  ./makecluster.sh Sending build context to Docker daemon 12.8 kB Step 1/10 : FROM ubuntu:xenial ---> 2fa927b5cdd3 Step 2/10 : ENV AEROSPIKE_VERSION 3.12.1 ---> Using cache ---> f9740fe0e5b5 Step 3/10 : ENV AEROSPIKE_SHA256 16ceb0d131892c3caab31ee031f7e37d7a611c22686fec2692facde87ac69a00 ---> Using cache ---> 5e7fbc820f7a Step 4/10 : RUN apt-get update -y && apt-get install -y wget python python-argparse python-bcrypt python-openssl logrotate net-tools iproute2 iputils-ping && wget "https://www.aerospike.com/artifacts/aerospike-server-community/${AEROSPIKE_VERSION}/aerospike-server-community-${AEROSPIKE_VERSION}-ubuntu16.04.tgz" -O aerospike-server.tgz && echo "$AEROSPIKE_SHA256 *aerospike-server.tgz" | sha256sum -c - && mkdir aerospike && tar xzf aerospike-server.tgz --strip-components=1 -C aerospike && dpkg -i aerospike/aerospike-server-*.deb && dpkg -i aerospike/aerospike-tools-*.deb && mkdir -p /var/log/aerospike/ && mkdir -p /var/run/aerospike/ && rm -rf aerospike-server.tgz aerospike /var/lib/apt/lists/* && dpkg -r wget ca-certificates && dpkg --purge wget ca-certificates && apt-get purge -y ---> Using cache ---> a1d797e088fa Step 5/10 : COPY aerospike.conf /etc/aerospike/aerospike.conf ---> Using cache ---> 7bb9f5326c7b Step 6/10 : COPY entrypoint.sh /entrypoint.sh ---> Using cache ---> 345534f6c3b8 Step 7/10 : VOLUME /opt/aerospike/data ---> Using cache ---> 3f07a5e4b113 Step 8/10 : EXPOSE 3000 3001 3002 3003 ---> Using cache ---> e081dff6a725 Step 9/10 : ENTRYPOINT /entrypoint.sh ---> Using cache ---> 923ff0299e70 Step 10/10 : CMD asd ---> Using cache ---> a05c71468897 Successfully built a05c71468897 3 aerospike3 aerospike3 4d2df0569581c967d29750a5f7f6e67fc1835e1f6b78157eb5c8b11f843a222b 4 aerospike4 aerospike4 3173f06d9012996ce318855d982fbc20c5985beb7e356863a0075ce3ae337b21 5 aerospike5 aerospike5 10592f8ca508c678cd67695402f3c23ad417716772cf5a20de91c3e178bb1c28 6 aerospike6 aerospike6 7ddac9e31db5b618114c155b40d8ad524b629e96c514837a36854cf420a29d5c 7 aerospike7 aerospike7 6168421deffead460ac238b2a9817769e29d3c68eca33863cf9b0e19a8c09a0f 8 aerospike8 aerospike8 9d1761592c30b1460c064ef06f70067217e1b1c61f3efc2b016113b4869cfc6f 9 aerospike9 aerospike9 67c37f2f6ebae065eef978dcf4683b6ad5bd18bed0411e3d6681c723776c1834 

5)validation群集信息:

使用docker exec运行asadm工具

 docker exec -ti aerospike7 asadm Aerospike Interactive Shell, version 0.1.9 Found 7 nodes Online: 172.17.0.2:3000, 172.17.0.8:3000, 172.17.0.3:3000, 172.17.0.4:3000, 172.17.0.7:3000, 172.17.0.6:3000, 172.17.0.5:3000 Admin> Admin> info ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Network Information~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Node Node Ip Build Cluster Cluster Cluster Principal Rackaware Client Uptime . Id . . Size Key Integrity . Mode Conns . 172.17.0.2:3000 BB9020011AC4202 172.17.0.2:3000 C-3.12.1 7 8DBD43898C508D41 True BB9080011AC4202 none 7 00:06:03 172.17.0.3:3000 BB9030011AC4202 172.17.0.3:3000 C-3.12.1 7 8DBD43898C508D41 True BB9080011AC4202 none 8 00:06:02 172.17.0.4:3000 BB9040011AC4202 172.17.0.4:3000 C-3.12.1 7 8DBD43898C508D41 True BB9080011AC4202 none 8 00:06:00 172.17.0.5:3000 BB9050011AC4202 172.17.0.5:3000 C-3.12.1 7 8DBD43898C508D41 True BB9080011AC4202 none 6 00:05:58 172.17.0.7:3000 BB9070011AC4202 172.17.0.7:3000 C-3.12.1 7 8DBD43898C508D41 True BB9080011AC4202 none 10 00:05:55 172.17.0.8:3000 *BB9080011AC4202 172.17.0.8:3000 C-3.12.1 7 8DBD43898C508D41 True BB9080011AC4202 none 6 00:05:52 6168421deffe:3000 BB9060011AC4202 172.17.0.6:3000 C-3.12.1 7 8DBD43898C508D41 True BB9080011AC4202 none 8 00:05:56 Number of rows: 7 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Namespace Information~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Namespace Node Avail% Evictions Master Replica Repl Stop Pending Disk Disk HWM Mem Mem HWM Stop . . . . (Objects,Tombstones) (Objects,Tombstones) Factor Writes Migrates Used Used% Disk% Used Used% Mem% Writes% . . . . . . . . (tx,rx) . . . . . . . test 172.17.0.2:3000 99 0.000 (0.000 ,0.000 ) (0.000 ,0.000 ) 2 false (0.000 ,0.000 ) 0.000 B 0 50 0.000 B 0 60 90 test 172.17.0.3:3000 99 0.000 (0.000 ,0.000 ) (0.000 ,0.000 ) 2 false (0.000 ,0.000 ) 0.000 B 0 50 0.000 B 0 60 90 test 172.17.0.4:3000 99 0.000 (0.000 ,0.000 ) (0.000 ,0.000 ) 2 false (0.000 ,0.000 ) 0.000 B 0 50 0.000 B 0 60 90 test 172.17.0.5:3000 99 0.000 (0.000 ,0.000 ) (0.000 ,0.000 ) 2 false (0.000 ,0.000 ) 0.000 B 0 50 0.000 B 0 60 90 test 172.17.0.7:3000 99 0.000 (0.000 ,0.000 ) (0.000 ,0.000 ) 2 false (0.000 ,0.000 ) 0.000 B 0 50 0.000 B 0 60 90 test 172.17.0.8:3000 99 0.000 (0.000 ,0.000 ) (0.000 ,0.000 ) 2 false (0.000 ,0.000 ) 0.000 B 0 50 0.000 B 0 60 90 test 6168421deffe:3000 99 0.000 (0.000 ,0.000 ) (0.000 ,0.000 ) 2 false (0.000 ,0.000 ) 0.000 B 0 50 0.000 B 0 60 90 test 0.000 (0.000 ,0.000 ) (0.000 ,0.000 ) (0.000 ,0.000 ) 0.000 B 0.000 B Number of rows: 8 

注意:像AMC或asadm这样的工具,如果在主机上的Docker容器之外运行,可能无法看到完整的集群。 在这种使用情况下,您可能需要在aerospike.conf中尝试docker主机networking和不同的侦听端口,或者替代方法是在容器中运行AMC。

6)如果使用–network = host,则需要修改aerospike.conf中的监听端口。 使用主机networking时,在同一主机上运行的具有相同IP地址的每个实例应使用不同的端口。

例:

 cat makecluster.sh docker build -t "aerospike/aerospike-server" . for i in {6..9} ; do echo $i; docker stop aerospike${i} docker rm aerospike${i} docker run -tid --name aerospike${i} -v /root/docker/aerospike-server.docker/aerospike${i}:/etc/aerospike --network host -p ${i}000:${i}000 -p ${i}001:${i}001 -p ${i}002:${i}002 -p ${i}003:${i}003 aerospike/aerospike-server done; 

示例configuration目录和文件:

 cat aerospike7/aerospike.conf # Aerospike database configuration file. # This stanza must come first. service { user root group root paxos-single-replica-limit 1 # Number of nodes where the replica count is automatically reduced to 1. pidfile /var/run/aerospike/asd.pid service-threads 4 transaction-queues 4 transaction-threads-per-queue 4 proto-fd-max 15000 } logging { # Log file must be an absolute path. file /var/log/aerospike/aerospike.log { context any info } # Send log messages to stdout console { context any info } } network { service { # Add interface name for network card used by host address br0 # Modify port to be used by your aerospike container port 7000 # Uncomment the following to set the `access-address` parameter to the # IP address of the Docker host. This will the allow the server to correctly # publish the address which applications and other nodes in the cluster to # use when addressing this node. # access-address <IPADDR> } heartbeat { mode multicast multicast-group 239.1.99.2 port 9918 interval 150 timeout 10 } fabric { # Modify port to be used by your aerospike container port 7001 } info { # Modify port to be used by your aerospike container port 7003 } } namespace test { replication-factor 2 memory-size 1G default-ttl 5d # 5 days, use 0 to never expire/evict. # storage-engine memory # To use file storage backing, comment out the line above and use the # following lines instead. storage-engine device { file /opt/aerospike/data/test.dat filesize 4G data-in-memory true # Store data in memory in addition to file. } } 

asadm输出:

 asadm -p 7000 Aerospike Interactive Shell, version 0.1.9 Found 4 nodes Online: 192.168.100.148:9000, 192.168.100.148:7000, 192.168.100.148:8000, 192.168.100.148:6000 Admin> info ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Network Information~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Node Node Ip Build Cluster Cluster Cluster Principal Rackaware Client Uptime . Id . . Size Key Integrity . Mode Conns . node.local:6000 177160DE04CA0568 192.168.120.148:6000 C-3.12.1 4 5009B1D835FA3C06 True 232960DE04CA0568 none 3 00:28:37 node.local:7000 1B5960DE04CA0568 192.168.120.148:7000 C-3.12.1 4 5009B1D835FA3C06 True 232960DE04CA0568 none 3 00:28:34 node.local:8000 1F4160DE04CA0568 192.168.120.148:8000 C-3.12.1 4 5009B1D835FA3C06 True 232960DE04CA0568 none 3 00:28:30 node.local:9000 *232960DE04CA0568 192.168.120.148:9000 C-3.12.1 4 5009B1D835FA3C06 True 232960DE04CA0568 none 4 00:28:25 Number of rows: 4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Namespace Information~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Namespace Node Avail% Evictions Master Replica Repl Stop Pending Disk Disk HWM Mem Mem HWM Stop . . . . (Objects,Tombstones) (Objects,Tombstones) Factor Writes Migrates Used Used% Disk% Used Used% Mem% Writes% . . . . . . . . (tx,rx) . . . . . . . test node.local:6000 99 0.000 (0.000 ,0.000 ) (0.000 ,0.000 ) 2 false (0.000 ,0.000 ) 0.000 B 0 50 0.000 B 0 60 90 test node.local:7000 99 0.000 (0.000 ,0.000 ) (0.000 ,0.000 ) 2 false (0.000 ,0.000 ) 0.000 B 0 50 0.000 B 0 60 90 test node.local:8000 99 0.000 (0.000 ,0.000 ) (0.000 ,0.000 ) 2 false (0.000 ,0.000 ) 0.000 B 0 50 0.000 B 0 60 90 test node.local:9000 99 0.000 (0.000 ,0.000 ) (0.000 ,0.000 ) 2 false (0.000 ,0.000 ) 0.000 B 0 50 0.000 B 0 60 90 test 0.000 (0.000 ,0.000 ) (0.000 ,0.000 ) (0.000 ,0.000 ) 0.000 B 0.000 B