「docker-comose で JobScheduler のテスト環境を作る」で構築した JobSchedulerのテスト環境に JobSchedulerAgent をインストールしたコンテナを追加します。
JobScheduler Agent のイメージ作成
JobScheduler Agent の Dockerfile を作成します。
内容は以下のとおり。
[root@centos0702 js_agent]# cat Dockerfile FROM java:8-jre WORKDIR /root RUN wget https://download.sos-berlin.com/JobScheduler.1.10/jobscheduler_unix_universal_agent.1.10.0.tar.gz && \ tar xfvz jobscheduler_unix_universal_agent.1.10.0.tar.gz CMD ["/root/jobscheduler_agent/bin/jobscheduler_agent.sh", "start_docker"]
イメージを作成します。
[root@centos0702 js_agent]# docker build -t js_agent . Sending build context to Docker daemon 2.048 kB Step 1 : FROM java:8-jre ---> e44d62cf8862 Step 2 : WORKDIR /root ---> Using cache ---> 929d91235aed Step 3 : RUN wget https://download.sos-berlin.com/JobScheduler.1.10/jobscheduler_unix_universal_agent.1.10.0.tar.gz && tar xfvz jobscheduler_unix_universal_agent.1.10.0.tar.gz ---> Using cache ---> ba19b86027e9 Step 4 : CMD /root/jobscheduler_agent/bin/jobscheduler_agent.sh start_docker ---> Using cache ---> df211a9ec34d Successfully built df211a9ec34d
イメージを確認します。
[root@centos0702 js_agent]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE js_agent latest df211a9ec34d About an hour ago 445.8 MB
docker-compose に追加
「docker-comose で JobScheduler のテスト環境を作る」で作成した docker-compose.yml に JobSchedulerAgent のコンテナを追加します。(赤字部分)
[root@centos0702 sosjs]# cat docker-compose.yml jobscheduler: image: floedermann/jobscheduler links: - db:mysql volumes_from: - datastore ports: - "4444:4444" - "40444:40444" db: image: mariadb environment: MYSQL_USER: jobscheduler MYSQL_PASSWORD: jobscheduler MYSQL_ROOT_PASSWORD: scheduler MYSQL_DATABASE: jobscheduler datastore: image: busybox command: /bin/true volumes: - ./live:/opt/jobscheduler/data/scheduler/config/live js_agent: image: js_agent
コンテナの起動
JobScheduler のテスト環境を起動します。
[root@centos0702 sosjs]# docker-compose up -d Creating sosjs_datastore_1 Creating sosjs_db_1 Creating sosjs_js_agent_1 Creating sosjs_jobscheduler_1
コンテナの状態を確認します。 sosjs_js_agent_1 がJobSchedulerAngetコンテナです。
[root@centos0702 sosjs]# docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------------------------------------------- sosjs_datastore_1 /bin/true Exit 0 sosjs_db_1 docker-entrypoint.sh mysqld Up 3306/tcp sosjs_jobscheduler_1 bash Up 0.0.0.0:40444->40444/tcp, /opt/startup_scheduler.sh 0.0.0.0:4444->4444/tcp, 48444/tcp sosjs_js_agent_1 /root/jobscheduler_agent/b Up ...
sosjs_js_agent_1 のIPアドレスを確認します。
[root@centos0702 sosjs]# docker inspect sosjs_js_agent_1 | grep IPAddress "SecondaryIPAddresses": null, "IPAddress": "172.17.0.4", "IPAddress": "172.17.0.4",
JOB動作確認
sosjs_js_agent_1 でジョブを実行するために、プロセスクラスを定義します。
[root@centos0702 sosjs]# cat ./live/js_agent01.process_class.xml <?xml version="1.0" encoding="ISO-8859-1"?> <process_class max_processes="10" remote_scheduler="http://172.17.0.4:4445"/>
sosjs_js_agent_1 で実行する JobChain と Job を定義します。
Job は IPアドレスを表示します。
[root@centos0702 sosjs]# cat ./live/job_chain1.job_chain.xml <?xml version="1.0" encoding="ISO-8859-1"?> <job_chain process_class="js_agent01"> <job_chain_node state="job01" job="job01" next_state="success" error_state="error"/> <job_chain_node state="success"/> <job_chain_node state="error"/> </job_chain> [root@centos0702 sosjs]# cat ./live/job01.job.xml <?xml version="1.0" encoding="ISO-8859-1"?> <job order="yes"> <script language="shell"> <![CDATA[ ip a ]]> </script> <run_time /> </job>
JOC でJobChainを実行して確認してみます。
プロセスクラスは下図のとおり
JobChain は下図のとおり
Job実行結果を見ると下図のとおり。
sosjs_js_agent_1 のIPアドレスが表示されます。