docker swarm - запуск Apache ignite

Thank you for reading this post, don't forget to subscribe!

Ниже будут тан­цы с буб­ном для запус­ка in-memory database apache ignite

https://apacheignite-tools.readme.io/

https://hub.docker.com/u/apacheignite

 

1.Созда­ём сеть:
docker network create --driver overlay ignite

2.Выка­чи­ва­ем образ:
docker pull apacheignite/web-console-standalone:2.7.0

пере­те­ги­ру­ем чтоб доба­вить в гитлаб
docker tag apacheignite/web-console-standalone:2.7.0 gitnexus.test.local:4567/swarm/apache-ignite/web-console-standalone:2.7.0

пушим образ в гитлаб:
docker push gitnexus.test.local:4567/swarm/apache-ignite/web-console-standalone:2.7.0

3.Созда­ём дирек­то­рию в кото­рой уже будет весь наш стек:
mkdir apache-ignite

В этой дирек­то­рии созда­дим файл  settings.js с настрой­ка­ми для наше­го бекенда(он нужен толь­ко для того, что­бы порт 3000 слу­шал 0,0,0,0 а не толь­ко 127,0,0,1, но что­бы это рабо­та­ло необ­хо­ди­мо ещё и в пере­мен­ные доба­вить server_host=0.0.0.0)

cat settings.js

[codesyntax lang="php" blockstate="collapsed"]

[/codesyntax]

 

4.Созда­дим файл с нашим стеком:
cat swarm-ignite.yml

 

[codesyntax lang="php" blockstate="collapsed"]

[/codesyntax]

 

5.Запус­ка­ем его:
docker stack deploy -c swarm-ignite.yml ignite --with-registry-auth

у нас будет рабо­тать толь­ко 1 сер­вис, наш бекенд.

docker service ls

ID                  NAME                MODE                REPLICAS            IMAGE                                                                          PORTS

tkdj3ezz393b        ignite_agent        replicated          0/1                 gitnexus.test.local:4567/swarm/apache-ignite/web-agent               

h75fy9cn0ljs        ignite_backend      replicated          1/1                 gitnexus.test.local:4567/swarm/apache-ignite/web-console-standalone:2.7.0   *:80->80/tcp, *:3000-3001->3000-3001/tcp

vc6mhn0tz303        ignite_ignite1      replicated          0/1                 gitnexus.test.local:4567/swarm/apache-ignite/web-ignite:latest           

m86b2v880mqu        ignite_ignite2      replicated          0/1                 gitnexus.test.local:4567/swarm/apache-ignite/web-ignite:latest           

x9i6aojpqo8j        ignite_ignite3      replicated          0/1                 gitnexus.test.local:4567/swarm/apache-ignite/web-ignite:latest    

 

6.Выка­чи­ва­ем аген­та кото­рый поз­во­лит нам рабо­тать с кластером:
захо­дим в контейнер:

[root@node1 apache-ignite]# docker service ps ignite_backend

ID                  NAME                IMAGE                                                                          NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS

qtl2jc6ut7k1        ignite_backend.1    gitnexus.test.local:4567/swarm/apache-ignite/web-console-standalone:2.7.0   node1               Running             Running 8 minutes ago

 

[root@node1 apache-ignite]# docker ps | grep ignite_backend

58a43ccfe953        gitnexus.test.local:4567/swarm/apache-ignite/web-console-standalone:2.7.0   "/opt/web-console/do…"   8 minutes ago       Up 8 minutes        80/tcp              ignite_backend.1.qtl2jc6ut7k1l95j9uwliwvrr

[root@node1 apache-ignite]# docker exec -ti 58a43ccfe953 bash

Нахо­дим архив с агентом:
root@58a43ccfe953:/opt/web-console# find / -name ignite-web-agent*
/opt/web-console/backend/agent_dists/ignite-web-agent-2.7.0.zip

Выхо­дим:

root@58a43ccfe953:/opt/web-console# exit

ска­чи­ва­ем его на хосто­вую ноду:

[root@node1 apache-ignite]# docker cp 58a43ccfe953:/opt/web-console/backend/agent_dists/ignite-web-agent-2.7.0.zip .

Рас­па­ко­вы­ва­ем:
[root@node1 apache-ignite]# unzip ignite-web-agent-2.7.0.zip
 

В фай­ле:
[root@node1 apache-ignite]# vim ignite-web-agent-2.7.0/ignite-web-agent.sh
 

пра­вим строку:
source "${IGNITE_HOME}"/include/functions.sh
на
source ${IGNITE_HOME}/functions.sh
 

После чего добав­ля­ем сле­ду­ю­щий Dockerfile:
[root@node1 apache-ignite]# cat ignite-web-agent-2.7.0/Dockerfile

[codesyntax lang="php" blockstate="collapsed"]

[/codesyntax]

Далее бил­дим образ:
[root@node1 ignite-web-agent-2.7.0]# docker build -t gitnexus.test.local:4567/swarm/apache-ignite/web-agent .

Пушим его в гитлаб:
docker push gitnexus.test.local:4567/swarm/apache-ignite/web-agent

 

7.Далее захо­дим  по доме­ну или ip адре­су, нажи­ма­ем sign up

Запол­ня­ем поля:

sign up

Create cluster configuration

Advanced

Discovery: Static Ips
Addresses:
ignite1:47500..47510

Ignite2:47500..47510

Ignite3:47500..47510
 

Если нуж­но будет настро­ить хра­не­ние дан­ных, то про­ма­ты­ва­ем вниз до:
"Data storage configuration"  вклю­ча­ем "Persistence enabled" и настра­и­ва­ем кон­фи­гу­ра­цию, а в сте­ке про­ки­ды­ва­ем вольюм
    volumes:

     - ignite1:/opt/ignite/apache-ignite/work
(для каж­до­го из инстансов)
 

после чего нажи­ма­ем на рас­ши­рен­ную часть save  и выби­ра­ем save and download
 

 

Будет ска­чан архив Cluster-project.zip
созда­ём для него дирек­то­рию: mkdir ignite_nodes
загру­жа­ем архив на сер­вер в эту дирек­то­рию, и распаковываем:
unzip Cluster-project.zip

 

Далее бил­дим образ:
docker build -t gitnexus.test.local:4567/swarm/apache-ignite/web-ignite .
(бил­дить луч­ше на сер­ве­ре с пря­мым досту­пом в нет так как прок­си в
mvn не полу­чи­лось подтянуть)

пушим:
docker push gitnexus.test.local:4567/swarm/apache-ignite/web-ignite:latest


всё теперь у нас появи­лось в гитла­бе 3 обра­за, это:
backend:
gitnexus.test.local:4567/swarm/apache-ignite/web-console-standalone:2.7.0
agent:
gitnexus.test.local:4567/swarm/apache-ignite/web-agent

Ignite:
gitnexus.test.local:4567/swarm/apache-ignite/web-ignite

 

8.Смот­рим токен, для это­го нажи­ма­ем на имя кла­сте­ра, -> Profile

Show security token

копи­ру­ем токен, y0kWMLkQglgEt7UdJfI7 и добав­ля­ем его в наш стек swarm-ignite.yml, к сер­ви­су agent
 

[codesyntax lang="php"]

[/codesyntax]

 

9.Уда­ля­ем сервисы:
[root@node1 apache-ignite]# docker service rm ignite_agent ignite_ignite1 ignite_ignite2 ignite_ignite3

и повтор­но деп­ло­им наш стек:
[root@node1 apache-ignite]# docker stack deploy -c swarm-ignite.yml ignite --with-registry-auth

 

10.Про­ве­ря­ем
Смот­рим по логам:
- что кла­стер видит все сервера:
[root@node1 apache-ignite]# docker service logs ignite_ignite1 | grep servers

ignite_ignite1.1.nxrgmzppxk5y@node3    | [06:31:38] New version is available at ignite.apache.org: 2.7.6
ignite_ignite1.1.nxrgmzppxk5y@node3    | [06:31:38] Topology snapshot [ver=3, locNode=a40d49cd, servers=3, clients=0, state=ACTIVE, CPUs=6, offheap=2.2GB, heap=3.0GB]

 

- что агент нор­маль­но подцепился:
[root@node1 apache-ignite]# docker service logs ignite_agent
ignite_agent.1.qb2kxa6nvbkp@node1    | [2020-02-19 06:31:01,790][INFO ][main][AgentLauncher] Starting Apache Ignite Web Console Agent…

ignite_agent.1.qb2kxa6nvbkp@node1    | [2020-02-19 06:31:02,087][WARN ][main][AgentLauncher] Failed to find agent property file: default.properties
ignite_agent.1.qb2kxa6nvbkp@node1    |
ignite_agent.1.qb2kxa6nvbkp@node1    | Agent configuration:
ignite_agent.1.qb2kxa6nvbkp@node1    | User's security tokens          : ****************JfI7
ignite_agent.1.qb2kxa6nvbkp@node1    | URI to Ignite node REST server  : http://ignite1:8080, http://ignite2:8080, http://ignite3:8080
ignite_agent.1.qb2kxa6nvbkp@node1    | URI to Ignite Console server    : http://backend:3000
ignite_agent.1.qb2kxa6nvbkp@node1    | Path to agent property file     : default.properties
ignite_agent.1.qb2kxa6nvbkp@node1    | Path to JDBC drivers folder     : ./jdbc-drivers
ignite_agent.1.qb2kxa6nvbkp@node1    | Demo mode                       : enabled
ignite_agent.1.qb2kxa6nvbkp@node1    |
ignite_agent.1.qb2kxa6nvbkp@node1    | [2020-02-19 06:31:02,542][INFO ][main][AgentLauncher] Connecting to: http://backend:3000
ignite_agent.1.qb2kxa6nvbkp@node1    | [2020-02-19 06:31:02,734][INFO ][EventThread][AgentLauncher] Connection established.
ignite_agent.1.qb2kxa6nvbkp@node1    | [2020-02-19 06:31:02,837][INFO ][EventThread][AgentLauncher] Authentication success.

 

В пане­ли мы уви­дим, что появил­ся под­клю­чён­ный кластер:

Если необ­хо­ди­мо акти­ви­ро­вать кла­стер без веб пане­ли то захо­дим на любой под­ня­тый кон­тей­нер кла­сте­ра и акти­ви­ру­ем кла­стер:
 

$IGNITE_HOME/bin/control.sh –activate

Режим про­вер­ки

./ignitevisorcmd.sh

Что­бы про­ве­рить запи­си в таблицах:
 

cd apache-ignite/bin

./sqlline.sh --verbose=true -u jdbc:ignite:thin://127.0.0.1

!tables пока­жет все таб­ли­цы