| 1 | [[PageOutline]] |
| 2 | |
| 3 | = はじめに = |
| 4 | このドキュメントはJ-PARC加速器向けに[https://slacmshankar.github.io/epicsarchiver_docs/ Archiver Appliance (AA)]をインストールして立ち上げた際の作業メモなので、適宜読み替えて頂きたい。 |
| 5 | * AAの[https://slacmshankar.github.io/epicsarchiver_docs/installguide.html インストールガイド]を良く読んでおくこと。 |
| 6 | * [https://slacmshankar.github.io/epicsarchiver_docs/quickstart.html Quickstart]の方法では、AAを停止するとどのPVをアーカイブしていたのという設定情報が失われてしまう。 |
| 7 | * AAの[https://slacmshankar.github.io/epicsarchiver_docs/installguide.html インストールガイド]を良く読んでおくこと。 |
| 8 | * [https://slacmshankar.github.io/epicsarchiver_docs/quickstart.html Quickstart]の方法では、AAを停止するとどのPVをアーカイブしていたのという設定情報が失われてしまう。 |
| 9 | * jkjarchiver-ap.mr.jkcontにインストールする |
| 10 | * OS : SL 6.8 / x86_64 |
| 11 | * epicsアカウントで作業する |
| 12 | * 作業ディレクトリ: /home/epics/archappl |
| 13 | * AAのインストール先: /opt/archappl |
| 14 | * AAのデータ保存先: /localdata/archappl |
| 15 | * 各種設定ファイル・起動スクリプトは(できるだけ)mercurialでバージョン管理している |
| 16 | * インストールの際に、X Window System上での作業が必要 |
| 17 | * AAインストール後の運用については[[wiki:epics/Archiver Appliance 運用メモ|Archiver Appliance 運用メモ]]を参照のこと |
| 18 | |
| 19 | = ダウンロード = |
| 20 | AAに必要なソフトウェアをあらかじめダウンロードしておく。ここでは/home/epics/archappl/downloadにダウンロードする。 |
| 21 | |
| 22 | == Archiver Appliance == |
| 23 | インストールするのはバイナリの配布物だが、ソースコードに管理用のスクリプトの例が含まれているので一緒にダウンロードしておく。 |
| 24 | * バイナリ |
| 25 | {{{ |
| 26 | % wget https://github.com/slacmshankar/epicsarchiverap/releases/download/v0.0.1_SNAPSHOT_20-Sept-2016/archappl_v0.0.1_SNAPSHOT_20-September-2016T13-50-17.tar.gz |
| 27 | }}} |
| 28 | * ソースコード |
| 29 | {{{ |
| 30 | % git clone https://github.com/slacmshankar/epicsarchiverap epicsarchiverap.git |
| 31 | }}} |
| 32 | |
| 33 | == Apache Tomcat == |
| 34 | AAを走らせるにはApache Tomcat 7.0.61以降が必要。[http://tomcat.apache.org/download-80.cgi Apache Tomcat配布元]から8.5.16をダウンロードした。 |
| 35 | |
| 36 | == MySQL == |
| 37 | AAがアーカイブするレコードの情報を記録するのに、MySQL 5.1以降が必要。 |
| 38 | SL6の配布物からMySQL 5.1.73をrpmでインストールした。 |
| 39 | {{{ |
| 40 | # yum install mysql mysql-server mysql-devel |
| 41 | }}} |
| 42 | |
| 43 | * 今回はAAを実行するマシンでMySQLサーバも走らせる |
| 44 | * MySQLのテーブルはNFSサーバ上に置く |
| 45 | * MySQLサーバはAAとは独立したマシンにした方がよかったかもしれない |
| 46 | |
| 47 | == MySQL クライアント jar == |
| 48 | mysql-connector-javaを[http://dev.mysql.com/downloads/connector/j/ MySQL本家]からダウンロードする。 |
| 49 | SL6標準のrpmパッケージは依存するライブラリを多数インストールするのでやめておく。 |
| 50 | |
| 51 | == JDK 1.8 == |
| 52 | 制御計算機にはすでにインストールしてあるので省略。 |
| 53 | |
| 54 | == zenity == |
| 55 | 制御計算機にはSL標準のrpmパッケージがインストールしてあるので省略。 |
| 56 | |
| 57 | == tar ballの展開 == |
| 58 | {{{ |
| 59 | % mkdir -p ~/archappl/workspace |
| 60 | % cd ~/archappl/workspace |
| 61 | % tar xf ../download/archappl_v0.0.1_SNAPSHOT_20-September-2016T13-50-17.tar.gz |
| 62 | % tar xf ../download/mysql-connector-java-5.1.40.tar.gz |
| 63 | }}} |
| 64 | |
| 65 | = MySQLのセットアップ = |
| 66 | == uid, gid == |
| 67 | mysql:mysqlが27:27になっている(mysqlをインストールする際に作られる?)のを、既存のマシンにあわせて38099:38099にする。 |
| 68 | mysqlが使うディレクトリのownerも変えておく: |
| 69 | {{{ |
| 70 | # chown 38099:38099 /var/lib/mysql |
| 71 | # chown 38099:38099 /var/run/mysql |
| 72 | }}} |
| 73 | |
| 74 | == dbを置くディレクトリ == |
| 75 | dbは/svrdbに置く。NFSサーバがexportしているディレクトリを/svrdbにマウントする。 |
| 76 | {{{ |
| 77 | jkjds01.ccr.jkcont:/svrdb /svrdb nfs bg,intr,soft,timeo=10,retrans=15,nfsvers=3 0 0 |
| 78 | }}} |
| 79 | /svrdbを掘ってマウントし、パーミッションを設定する。mysqlの起動スクリプトがroot権限でこのディレクトリに書き込もうとするので、NFSサーバも設定しておく。 |
| 80 | {{{ |
| 81 | # mkdir /svrdb |
| 82 | # mount /svrdb |
| 83 | # mkdir /svrdb/mysql5.1/jkjarchiver-ap |
| 84 | # chown 38099:38099 /svrdb/mysql5.1/jkjarchiver-ap |
| 85 | }}} |
| 86 | |
| 87 | == /etc/my.cnf == |
| 88 | MySQLの設定ファイルをリポジトリからコピーして使う。 |
| 89 | {{{ |
| 90 | [mysqld] |
| 91 | #datadir=/var/lib/mysql |
| 92 | #socket=/var/lib/mysql/mysql.sock |
| 93 | #user=mysql |
| 94 | # Disabling symbolic-links is recommended to prevent assorted security risks |
| 95 | #symbolic-links=0 |
| 96 | |
| 97 | #datadir=/localdata/mysql |
| 98 | #socket=/localdata/mysql/mysql.sock |
| 99 | datadir=/svrdb/mysql5.1/jkjarchiver-ap/ |
| 100 | socket=/var/lib/mysql/mysql.sock |
| 101 | user=mysql |
| 102 | symbolic-links=0 |
| 103 | character-set-server = utf8 |
| 104 | innodb_flush_log_at_trx_commit = 1 |
| 105 | |
| 106 | [mysqld_safe] |
| 107 | log-error=/var/log/mysqld.log |
| 108 | pid-file=/var/run/mysqld/mysqld.pid |
| 109 | }}} |
| 110 | |
| 111 | == logrotate == |
| 112 | /etc/logrotate.d/mysqld に手順が書いてある。後回し。 |
| 113 | |
| 114 | == mysqlサーバ自動起動の設定 == |
| 115 | {{{ |
| 116 | # cd /etc/rd.c/ini.d |
| 117 | # /sbin/chkconfig --level 3 mysqld on |
| 118 | # /sbin/chkconfig --level 4 mysqld on |
| 119 | # /sbin/chkconfig --level 5 mysqld on |
| 120 | }}} |
| 121 | |
| 122 | == MySQLサーバの起動 == |
| 123 | dbが存在しない場合は、MySQLサーバの初回起動時に、スクリプトがdbを作ってくれる。 |
| 124 | {{{ |
| 125 | # /etc/rc.d/init.d/mysqld start |
| 126 | MySQL データベースを初期化中: Installing MySQL system tables... |
| 127 | |
| 128 | Filling help tables... |
| 129 | OK |
| 130 | |
| 131 | To start mysqld at boot time you have to copy |
| 132 | support-files/mysql.server to the right place for your system |
| 133 | |
| 134 | PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! |
| 135 | To do so, start the server, then issue the following commands: |
| 136 | |
| 137 | /usr/bin/mysqladmin -u root password 'new-password' |
| 138 | /usr/bin/mysqladmin -u root -h jkjarchiver-ap.mr.jkcont password 'new-password' |
| 139 | |
| 140 | Alternatively you can run: |
| 141 | /usr/bin/mysql_secure_installation |
| 142 | |
| 143 | which will also give you the option of removing the test |
| 144 | databases and anonymous user created by default. This is |
| 145 | strongly recommended for production servers. |
| 146 | |
| 147 | See the manual for more instructions. |
| 148 | |
| 149 | You can start the MySQL daemon with: |
| 150 | cd /usr ; /usr/bin/mysqld_safe & |
| 151 | |
| 152 | You can test the MySQL daemon with mysql-test-run.pl |
| 153 | cd /usr/mysql-test ; perl mysql-test-run.pl |
| 154 | |
| 155 | Please report any problems with the /usr/bin/mysqlbug script! |
| 156 | |
| 157 | [ OK ] |
| 158 | mysqld を起動中: [ OK ] |
| 159 | }}} |
| 160 | |
| 161 | == /usr/bin/mysql_secure_installation == |
| 162 | MySQLの初期設定を行う。質問をよく読む。Yes/Noの質問には全てYで答える。 |
| 163 | |
| 164 | {{{ |
| 165 | # /usr/bin/mysql_secure_installation |
| 166 | |
| 167 | |
| 168 | |
| 169 | |
| 170 | NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL |
| 171 | SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! |
| 172 | |
| 173 | |
| 174 | In order to log into MySQL to secure it, we'll need the current |
| 175 | password for the root user. If you've just installed MySQL, and |
| 176 | you haven't set the root password yet, the password will be blank, |
| 177 | so you should just press enter here. |
| 178 | |
| 179 | Enter current password for root (enter for none): |
| 180 | OK, successfully used password, moving on... |
| 181 | |
| 182 | Setting the root password ensures that nobody can log into the MySQL |
| 183 | root user without the proper authorisation. |
| 184 | |
| 185 | Set root password? [Y/n] Y |
| 186 | New password: |
| 187 | Re-enter new password: |
| 188 | Password updated successfully! |
| 189 | Reloading privilege tables.. |
| 190 | ... Success! |
| 191 | |
| 192 | |
| 193 | By default, a MySQL installation has an anonymous user, allowing anyone |
| 194 | to log into MySQL without having to have a user account created for |
| 195 | them. This is intended only for testing, and to make the installation |
| 196 | go a bit smoother. You should remove them before moving into a |
| 197 | production environment. |
| 198 | |
| 199 | Remove anonymous users? [Y/n] y |
| 200 | ... Success! |
| 201 | |
| 202 | Normally, root should only be allowed to connect from 'localhost'. This |
| 203 | ensures that someone cannot guess at the root password from the network. |
| 204 | |
| 205 | Disallow root login remotely? [Y/n] y |
| 206 | ... Success! |
| 207 | |
| 208 | By default, MySQL comes with a database named 'test' that anyone can |
| 209 | access. This is also intended only for testing, and should be removed |
| 210 | before moving into a production environment. |
| 211 | |
| 212 | Remove test database and access to it? [Y/n] y |
| 213 | - Dropping test database... |
| 214 | ... Success! |
| 215 | - Removing privileges on test database... |
| 216 | ... Success! |
| 217 | |
| 218 | Reloading the privilege tables will ensure that all changes made so far |
| 219 | will take effect immediately. |
| 220 | |
| 221 | Reload privilege tables now? [Y/n] y |
| 222 | ... Success! |
| 223 | |
| 224 | Cleaning up... |
| 225 | |
| 226 | |
| 227 | |
| 228 | All done! If you've completed all of the above steps, your MySQL |
| 229 | installation should now be secure. |
| 230 | |
| 231 | Thanks for using MySQL! |
| 232 | }}} |
| 233 | |
| 234 | == schemaの作成 == |
| 235 | DB(archappl), ユーザー(archappl)とパスワード(archappl)を作る。 |
| 236 | |
| 237 | {{{ |
| 238 | % mysql -u root -p |
| 239 | Enter password: |
| 240 | Welcome to the MySQL monitor. Commands end with ; or \g. |
| 241 | Your MySQL connection id is 14 |
| 242 | Server version: 5.1.73 Source distribution |
| 243 | |
| 244 | Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. |
| 245 | |
| 246 | Oracle is a registered trademark of Oracle Corporation and/or its |
| 247 | affiliates. Other names may be trademarks of their respective |
| 248 | owners. |
| 249 | |
| 250 | Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. |
| 251 | |
| 252 | mysql> CREATE DATABASE IF NOT EXISTS archappl; |
| 253 | Query OK, 1 row affected (0.00 sec) |
| 254 | |
| 255 | mysql> GRANT ALL PRIVILEGES ON archappl.* TO 'archappl'@'localhost' IDENTIFIED BY 'archappl'; |
| 256 | Query OK, 0 rows affected (0.00 sec) |
| 257 | }}} |
| 258 | |
| 259 | == テーブルの作成 == |
| 260 | AA用のテーブルはAAのインストールスクリプト(後述)が作ってくれる。 |
| 261 | |
| 262 | = Archiver Applianceのインストール = |
| 263 | |
| 264 | インストールスクリプトを走せると、 |
| 265 | 1. MySQLのテーブル |
| 266 | 1. Tomcatのデプロイ |
| 267 | 1. アプライアンスの設定ファイルの作成 |
| 268 | 1. 起動スクリプトの作成 |
| 269 | をやってくれる |
| 270 | |
| 271 | == インストール先のディレクトリ == |
| 272 | AAをインストールするディレクトリ(/opt/archappl)をあらかじめ掘っておく |
| 273 | {{{ |
| 274 | # mkdir -p /opt/archappl |
| 275 | }}} |
| 276 | |
| 277 | == ポリシーファイル == |
| 278 | ポリシーファイルは AAにレコードを登録する際に用いられるファイルで、 |
| 279 | * LTS/MTS/STSの設定 |
| 280 | * レコードをサンプルする方法(monitor/scan)とサンプリング時間 |
| 281 | * 値と一緒に保存するHIGH/HIGH/LOW/LOLO等のフィールド |
| 282 | 等をPythonのdictionaryとして記述する。 |
| 283 | |
| 284 | インストールスクリプトを走らせる前に、ポリシーファイルを用意しておく。雛形が |
| 285 | {{{ |
| 286 | epicsarchiverap.git/src/sitespecific/tests/classpathfiles/policies.py |
| 287 | }}} |
| 288 | に用意されている。 |
| 289 | * インストールスクリプトがポリシーファイルの所在を尋ねてくる。存在しないファイルを指定すると、スクリプトの実行に失敗する |
| 290 | * 中身は後で書き換えるので、ここでは気にしない |
| 291 | * AAのクラスタを組む場合は、各ノードに同じファイルのコピーを置くか、共有ディレクトリに置いておく |
| 292 | 制御計算機用のポリシーファイルは |
| 293 | {{{ |
| 294 | /jk/dev/operation_app/jkControl/ArchiverAppliance/deploy/policies.py |
| 295 | }}} |
| 296 | に置いてある |
| 297 | |
| 298 | === LTS/MTS/STS === |
| 299 | * STS ... PARTITION_HOUR |
| 300 | * MTS ... PARTITION_DAY&hold=5&gather=1 |
| 301 | * LTS ... PARTITION_MONTH |
| 302 | |
| 303 | === sampling method/sampling period === |
| 304 | * 基本的にはMONITORにする |
| 305 | * 25Hzで更新されるLIのPVはSCAN 1.0secにする |
| 306 | |
| 307 | === metaFields === |
| 308 | HIHI等のメタフィールドは保存しない。pvPolicyDict\["archiveFields"\]は空のarrayにしておく。 |
| 309 | |
| 310 | == インストールスクリプト == |
| 311 | 予めインストール先のディレクトリを作っておく。epicsアカウントで書き込めるようにownerを変更しておく: |
| 312 | {{{ |
| 313 | # mkdir -p /opt/archappl |
| 314 | # chown epics.epics /opt/archappl |
| 315 | }}} |
| 316 | |
| 317 | AAを展開したディレクトリにあるインストールスクリプトをepicsアカウントで走らせる。 |
| 318 | スクリプトを走らせると、ダイアログが開いて |
| 319 | * DEPLOY_DIR (tomcatを展開するディレクトリ) → /opt/archappl |
| 320 | * apache-tomcat-x.y.z.tar.gz の所在 |
| 321 | * mysql-connector-java-x.y.z-bin.jar の所在 |
| 322 | * mysqlサーバに接続するためのmysqlコマンドに渡す引き数 → ここでは--user=archappl --password=archappl --database=archappl |
| 323 | * ポリシーファイル(policies.py)の所在 |
| 324 | を尋ねてくる。 |
| 325 | {{{ |
| 326 | % cd ~archappl/workspace |
| 327 | % install_scripts/single_machine_install.sh |
| 328 | This script runs thru a typical install scenario for a single machine |
| 329 | You can use this to create a standard multi-instance (one Tomcat for ear WAR) tomcat deployment in a multi machine cluster by setting the ARCHAPPL_APPLIANCES and the ARCHAPPL_MYIDENTITY |
| 330 | For installations in a cluster, please do create a valid appliances.xml and export ARCHAPPL_APPLIANCES and ARCHAPPL_MYIDENTITY |
| 331 | ... |
| 332 | ... |
| 333 | Setting TOMCAT_HOME to the mgmt webapp in /opt/archappl/mgmt |
| 334 | Setting TOMCAT_HOME to /opt/archappl/apache-tomcat-8.5.16 |
| 335 | Calling deploy release with /opt/archappl/deployRelease.sh /home/epics/archappl/workspace |
| 336 | Deploying a new release from /home/epics/archappl/workspace onto /opt/archappl |
| 337 | /opt/archappl/mgmt/webapps ~/archappl/workspace |
| 338 | ~/archappl/workspace |
| 339 | /opt/archappl/engine/webapps ~/archappl/workspace |
| 340 | ~/archappl/workspace |
| 341 | /opt/archappl/etl/webapps ~/archappl/workspace |
| 342 | ~/archappl/workspace |
| 343 | /opt/archappl/retrieval/webapps ~/archappl/workspace |
| 344 | ~/archappl/workspace |
| 345 | Done deploying a new release from /home/epics/archappl/workspace onto /opt/archappl |
| 346 | Do you have a site specific policies.py file? |
| 347 | Where's your site specific policies.py file? |
| 348 | Setting ARCHAPPL_POLICIES to /home/epics/archappl/policies.py |
| 349 | Done with the installation. Please use /opt/archappl/sampleStartup.sh to start and stop the appliance and /opt/archappl/deployRelease.sh to deploy a new release. |
| 350 | }}} |
| 351 | |
| 352 | == アプライアンスの設定 == |
| 353 | appliances.xmlでノードのidentityと各webappが使うURLを設定する |
| 354 | * デフォルトでは/opt/archappl/appliances.xmlが使われる |
| 355 | * 起動スクリプトの環境変数でファイル名を指定する |
| 356 | * AAのクラスタを組む場合は、各ノードに同じファイルのコピーを置くか、共有ディレクトリに置いておく |
| 357 | |
| 358 | {{{ |
| 359 | <appliances> |
| 360 | <appliance> |
| 361 | <identity>appliance0</identity> |
| 362 | <cluster_inetport>jkjarchiver-ap.mr.jkcont:16670</cluster_inetport> |
| 363 | <mgmt_url>http://jkjarchiver-ap.mr.jkcont:17665/mgmt/bpl</mgmt_url> |
| 364 | <engine_url>http://jkjarchiver-ap.mr.jkcont:17666/engine/bpl</engine_url> |
| 365 | <etl_url>http://jkjarchiver-ap.mr.jkcont:17667/etl/bpl</etl_url> |
| 366 | <retrieval_url>http://localhost:17668/retrieval/bpl</retrieval_url> |
| 367 | <data_retrieval_url>http://jkjarchiver-ap.mr.jkcont:17668/retrieval</data_retrieval_url> |
| 368 | </appliance> |
| 369 | </appliances> |
| 370 | }}} |
| 371 | |
| 372 | |
| 373 | == プロパティファイル == |
| 374 | archappl.propertiesでAAの動作を設定する。 |
| 375 | * デフォルトでは各web appのWEB-INF/classes/archappl.propertiesが使われる |
| 376 | * 例えば: /opt/archappl/engine/webapps/engine/WEB-INF/classes/archappl.properties |
| 377 | * 起動スクリプトの環境変数でファイル名を指定する |
| 378 | |
| 379 | アーカイブエンジンのバッファがあふれるので、プロパティファイルでマージンを大きめにとることにする: |
| 380 | {{{ |
| 381 | ... |
| 382 | # Increase buffer capacity adjustment in order to avoid buffer overflow in J-PARC MR. |
| 383 | org.epics.archiverappliance.config.PVTypeInfo.sampleBufferCapacityAdjustment = 5.0 |
| 384 | ... |
| 385 | }}} |
| 386 | |
| 387 | サンプリング間隔の補正は無効にしておく: |
| 388 | {{{ |
| 389 | ... |
| 390 | # J-PARC MR |
| 391 | org.epics.archiverappliance.engine.epics.scanJitterFactor=1.00 |
| 392 | ... |
| 393 | }}} |
| 394 | |
| 395 | pbファイルのディレクトリの区切りに使う文字を指定する。とりあえずデフォルトのままにしたが、アンダースコア("_")も含めておいた方がよかったかもしれない。 |
| 396 | {{{ |
| 397 | org.epics.archiverappliance.config.ConvertPVNameToKey.siteNameSpaceSeparators = [\\:\\-] |
| 398 | }}} |
| 399 | |
| 400 | == TOMCATの設定 == |
| 401 | === ${TOMCAT_HOME}/conf/server.xml === |
| 402 | * mgmt webappが使うポートを、8080(tomcatのデフォルト)からappliances.xmlで指定したポート番号に合わせて17665にする。 |
| 403 | {{{ |
| 404 | ... |
| 405 | <!-- A "Connector" represents an endpoint by which requests are received |
| 406 | and responses are returned. Documentation at : |
| 407 | Java HTTP Connector: /docs/config/http.html (blocking & non-blocking) |
| 408 | Java AJP Connector: /docs/config/ajp.html |
| 409 | APR (HTTP/AJP) Connector: /docs/apr.html |
| 410 | Define a non-SSL HTTP/1.1 Connector on port 8080 |
| 411 | --> |
| 412 | <Connector port="17665" protocol="HTTP/1.1" |
| 413 | connectionTimeout="20000" |
| 414 | redirectPort="8443" /> |
| 415 | |
| 416 | ... |
| 417 | }}} |
| 418 | * apache httpdとAJPを使った連携をしない場合は、AJP Connectorの設定をコメントアウトしておく: |
| 419 | {{{ |
| 420 | ... |
| 421 | <!--<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />--> |
| 422 | ... |
| 423 | }}} |
| 424 | * SHUTDOWNコマンドの使うポートは8005のままにしておく。 |
| 425 | |
| 426 | === ${TOMCAT_HOME}/lib/log4j.properties === |
| 427 | {{{ |
| 428 | # Set root logger level and its only appender to A1. |
| 429 | log4j.rootLogger=ERROR, A1 |
| 430 | log4j.logger.config.org.epics.archiverappliance=INFO |
| 431 | log4j.logger.org.apache.http=ERROR |
| 432 | |
| 433 | |
| 434 | # A1 is set to be a DailyRollingFileAppender |
| 435 | log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender |
| 436 | log4j.appender.A1.File=arch.log |
| 437 | log4j.appender.A1.DatePattern='.'yyyy-MM-dd |
| 438 | |
| 439 | |
| 440 | # A1 uses PatternLayout. |
| 441 | log4j.appender.A1.layout=org.apache.log4j.PatternLayout |
| 442 | log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n |
| 443 | }}} |
| 444 | |
| 445 | === ${TOMCAT_HOME}/conf/context.xml にMySQLの設定を追加する === |
| 446 | * 'jdbc/archappl'の設定を追加する: |
| 447 | {{{ |
| 448 | ... |
| 449 | <Context> |
| 450 | |
| 451 | <!-- Default set of monitored resources --> |
| 452 | <WatchedResource>WEB-INF/web.xml</WatchedResource> |
| 453 | |
| 454 | <!-- Uncomment this to disable session persistence across Tomcat restarts --> |
| 455 | <!-- |
| 456 | <Manager pathname="" /> |
| 457 | --> |
| 458 | |
| 459 | <!-- Uncomment this to enable Comet connection tacking (provides events |
| 460 | on session expiration as well as webapp lifecycle) --> |
| 461 | <!-- |
| 462 | <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> |
| 463 | --> |
| 464 | |
| 465 | <Resource name="jdbc/archappl" |
| 466 | auth="Container" |
| 467 | type="javax.sql.DataSource" |
| 468 | factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" |
| 469 | username="archappl" |
| 470 | password="archappl" |
| 471 | testWhileIdle="true" |
| 472 | testOnBorrow="true" |
| 473 | testOnReturn="false" |
| 474 | validationQuery="SELECT 1" |
| 475 | validationInterval="30000" |
| 476 | timeBetweenEvictionRunsMillis="30000" |
| 477 | maxActive="10" |
| 478 | minIdle="2" |
| 479 | maxWait="10000" |
| 480 | initialSize="2" |
| 481 | removeAbandonedTimeout="60" |
| 482 | removeAbandoned="true" |
| 483 | logAbandoned="true" |
| 484 | minEvictableIdleTimeMillis="30000" |
| 485 | jmxEnabled="true" |
| 486 | driverClassName="com.mysql.jdbc.Driver" |
| 487 | url="jdbc:mysql://localhost:3306/archappl" |
| 488 | /> |
| 489 | </Context> |
| 490 | }}} |
| 491 | |
| 492 | == 起動スクリプトの修正 == |
| 493 | インストールスクリプトがAAの起動スクリプトsampleStartup.shを生成するので、環境に合わせて書き換える。 |
| 494 | |
| 495 | === アプライアンスの設定 === |
| 496 | {{{ |
| 497 | export ARCHAPPL_APPLIANCES=/jk/dev/operation_app/jkControl/ArchiverAppliance/deploy/appliances.xml |
| 498 | export ARCHAPPL_MYIDENTITY="appliance0" |
| 499 | }}} |
| 500 | |
| 501 | === EPICSの設定 === |
| 502 | EPICS用の環境変数を設定するshスクリプトをsourceする: |
| 503 | {{{ |
| 504 | source /jk/dev/operation_app/jkControl/ArchiverAppliance/deploy/setEPICSEnv.sh |
| 505 | }}} |
| 506 | |
| 507 | {{{ |
| 508 | export EPICS_CA_ADDR_LIST=... |
| 509 | #export EPICS_CA_AUTO_ADDR_LIST=false |
| 510 | #export EPICS_CA_SERVER_PORT=5064 |
| 511 | #export EPICS_CA_REPEATER_PORT=5065 |
| 512 | |
| 513 | export EPICS_TS_MIN_WEST=-540 |
| 514 | #export EPICS_CA_MAX_ARRAY_BYTES=6000000 |
| 515 | export EPICS_CA_MAX_ARRAY_BYTES=65536 |
| 516 | }}} |
| 517 | |
| 518 | === ポリシーファイル === |
| 519 | ポリシーファイルは環境変数で指定する。インストールスクリプトを実行した際に指定したファイルを指しているので、運転用のポリシーファイルを指すように書き換える: |
| 520 | {{{ |
| 521 | export ARCHAPPL_POLICIES=/jk/dev/operation_app/jkControl/ArchiverAppliance/deploy/policies.py |
| 522 | }}} |
| 523 | |
| 524 | === プロパティファイル === |
| 525 | インストールスクリプトが作るAAの起動スクリプトには何も書かれていないが、プロパティファイルも起動スクリプトから環境変数で指定する: |
| 526 | {{{ |
| 527 | export ARCHAPPL_PROPERTIES_FILENAME=/jk/dev/operation_app/jkControl/ArchiverAppliance/deploy/archappl.properties |
| 528 | }}} |
| 529 | |
| 530 | === ストレージの設定 === |
| 531 | {{{ |
| 532 | export ARCHAPPL_SHORT_TERM_FOLDER=/localdata/archappl/sts/ArchiverStore |
| 533 | export ARCHAPPL_MEDIUM_TERM_FOLDER=/localdata/archappl/mts/ArchiverStore |
| 534 | export ARCHAPPL_LONG_TERM_FOLDER=/localdata/archappl/lts/ArchiverStore |
| 535 | }}} |
| 536 | |
| 537 | == データ保存先の作成 == |
| 538 | 起動スクリプトでの設定に合うように、データを保存するディレクトリを作る。epicsアカウントで書き込めるようにownerを変更しておく: |
| 539 | {{{ |
| 540 | # mkdir -p /localdata/archappl/lts |
| 541 | # mkdir -p /localdata/archappl/mts |
| 542 | # mkdir -p /localdata/archappl/sts |
| 543 | # chown epics.epics /localdata/archappl |
| 544 | # chown epics.epics /localdata/archappl/lts |
| 545 | # chown epics.epics /localdata/archappl/mts |
| 546 | # chown epics.epics /localdata/archappl/sts |
| 547 | }}} |
| 548 | |
| 549 | = Apache httpdとの連携 = |
| 550 | AAの各web appにポート80番でアクセスできるようにするため、jkjarchiver-apにリバースプロキシを立ち上げる。ここではAJPを使わずに、naiiveなhttpプロキシにする: |
| 551 | {{{ |
| 552 | # yum install httpd24-httpd-tools httpd24-httpd |
| 553 | }}} |
| 554 | |
| 555 | * /opt/rh/httpd24/root/etc/httpd/conf/httpd.confには触らないようにする |
| 556 | * ドキュメントのディレクトリにあるファイルをconf.dにコピーして適宜書き換える |
| 557 | {{{ |
| 558 | # cd /opt/rh/httpd24/root/etc/httpd/conf.d |
| 559 | # cp /opt/rh/httpd24/root/usr/share/doc/httpd24-httpd-2.4.18/httpd-default.conf 00-default.conf |
| 560 | # cp /opt/rh/httpd24/root/usr/share/doc/httpd24-httpd-2.4.18/httpd-mpm.conf 00-mpm.conf |
| 561 | }}} |
| 562 | |
| 563 | == 基本的な設定 == |
| 564 | * conf.d/00-default.cont |
| 565 | {{{ |
| 566 | Timeout 600 |
| 567 | }}} |
| 568 | |
| 569 | * conf.d/00-mpm.conf |
| 570 | {{{ |
| 571 | <IfModule mpm_prefork_module> |
| 572 | ... |
| 573 | MaxConnecitonPerChild 2000 |
| 574 | </ifModule> |
| 575 | }}} |
| 576 | |
| 577 | == リバースプロキシの設定 == |
| 578 | * conf.d/proxy.conf |
| 579 | {{{ |
| 580 | ProxyRequests Off |
| 581 | |
| 582 | ProxyPass /mgmt http://localhost:17665/mgmt |
| 583 | ProxyPassReverse /mgmt http://localhost:17665/mgmt |
| 584 | |
| 585 | ProxyPass /retrieval http://localhost:17668/retrieval |
| 586 | ProxyPassReverse /retrieval http://localhost:17668/retrieval |
| 587 | |
| 588 | <Proxy *> |
| 589 | Order deny,allow |
| 590 | Allow from all |
| 591 | </Proxy> |
| 592 | }}} |
| 593 | |
| 594 | == httpd24の自動起動の設定 == |
| 595 | {{{ |
| 596 | chkconfig --add httpd24-httpd |
| 597 | chkconfig --level 3 httpd24-httpd on |
| 598 | chkconfig --level 4 httpd24-httpd on |
| 599 | chkconfig --level 5 httpd24-httpd on |
| 600 | }}} |
| 601 | |
| 602 | = AAの起動と確認 = |
| 603 | * 自動起動/自動停止させる |
| 604 | /etc/rc.d/init.dに起動スクリプトを用意し、マシンの起動時/停止時にepicsアカウントでAAが自動的に起動/停止するようにする。 |
| 605 | |
| 606 | インストールスクリプトが作った起動スクリプトをrcスクリプトに書き換えたものが |
| 607 | {{{ |
| 608 | /jk/dev/operation_app/jkControl/ArchiverAppliance/deploy/sampleStartup.sh |
| 609 | }}} |
| 610 | に置いてある。/etc/rc.d/init.dにコピーし、chkconfigを使って適切にsymlinkを張る: |
| 611 | {{{ |
| 612 | cp /jk/dev/operation_app/jkControl/ArchiverAppliance/deploy/sampleStartup.sh /etc/rc.d/init.d/archappl |
| 613 | /sbin/chkconfig --add archappl |
| 614 | chkconfig --level 3 archappl on |
| 615 | chkconfig --level 4 archappl on |
| 616 | chkconfig --level 5 archappl on |
| 617 | }}} |
| 618 | * 手動で起動する |
| 619 | {{{ |
| 620 | # /etc/rc.d/init.d/archappl start |
| 621 | }}} |
| 622 | |
| 623 | * webブラウザで管理用web appにアクセスする |
| 624 | {{{ |
| 625 | http://jkjarchiver-ap.mr.jkcont:17665/mgmt |
| 626 | }}} |
| 627 | * http://jkjarchiver-ap.mr.jkcont:17665/mgmt/ui/index.html にforwardされる |
| 628 | * 各web appが起動する前にアクセスすると503が返ってきて"数分待て"と表示されるが、数分では起動しない。気長に待て |
| 629 | * 各web appが起動する前にアクセスすると503が返ってきて"数分待て"と表示されるが、数分では起動しない。気長に待て |
| 630 | * [[wiki:epics/Archiver Appliance 運用メモ|Archiver Appliance 運用メモ]]に続く |
| 631 | |
| 632 | = 参考 = |
| 633 | * [https://slacmshankar.github.io/epicsarchiver_docs/installguide.html Archiver Appliance Install Guide] |
| 634 | * [https://slacmshankar.github.io/epicsarchiver_docs/admin.html Archiver Appliance Administration Guide] |
| 635 | * [https://slacmshankar.github.io/epicsarchiver_docs/api/mgmt_scriptables.html Business Process Logics for scripting] |
| 636 | * [https://github.com/jeonghanlee/epicsarchiverap-sites Site-specific (ESS) EPICS Archiver Appliance Deployment (for CentOS7)] |