一、软件安装
1.1 MySQL安装
- 先下载安装包 mysql-8.0.23-1.el7.x86_64.rpm-bundle.tar.gz。
- 解压后,安装过程应按照如下顺序进行:
(1) mysql-community-common
[dongxw@localhost mysql]$ sudo rpm -ivh mysql-community-common-8.0.23-1.el7.x86_64.rpm
- (2) mysql-community-libs(需先移除mariadb-libs,并先安装mysql-community-client-plugins)
[dongxw@localhost mysql]$ sudo rpm -ivh mysql-community-client-plugins-8.0.23-1.el7.x86_64.rpm
[dongxw@localhost mysql]$ sudo rpm -ivh mysql-community-libs-8.0.23-1.el7.x86_64.rpm
- (3) mysql-community-client(需先移除mariadb、mariadb-server)
[dongxw@localhost mysql]$ sudo rpm -ivh mysql-community-client-8.0.23-1.el7.x86_64.rpm
- (4) mysql-community-server
[dongxw@localhost mysql]$ sudo rpm -ivh mysql-community-server-8.0.23-1.el7.x86_64.rpm
- 安装完MySQL后需要一些初始化设置:
(1)开启MySQL服务:
[dongxw@localhost ~]$ sudo mysqld --initialize
[dongxw@localhost ~]$ sudo chown mysql:mysql /var/lib/mysql -R # 改变/var/lib/mysql及其子目录的用户和属组
[dongxw@localhost ~]$ systemctl start mysqld.service # 开启MySQL服务
[dongxw@localhost ~]$ systemctl enable mysqld
- (2)更改MySQL root用户密码:
[dongxw@localhost ~]$ sudo cat /var/log/mysqld.log |grep password # 查看数据库root用户的密码
2021-08-23T06:58:17.451923Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: tQ:twskNh3UD
[dongxw@localhost ~]$ mysql -uroot -p
Enter password: tQ:twskNh3UD
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '123456';
- 之后,再次登录本机上的MySQL即可用以下命令:
[dongxw@localhost ~]$ mysql -uroot -p123456
- (3)新建archappl用户和数据库:
为Archiver Appliance创建新的MySQL用户archappl,密码为archappl:
mysql> create user 'archappl'@'%' identified by 'archappl'; # 先创建用户
mysql> grant all on archappl.* to 'archappl'@'%'; # 再赋予关于archappl.* database的一切权限
mysql> create database archappl; # 创建archappl数据库
1.2 mysql-connector-java安装
其实mysql-connector-java不需安装,只需要在Archiver Appliance安装时提供mysql-connector-java-5.-bin.jar文件。所以我们下载其安装包并解压即可。
(1)获得MySQL版本:
[dongxw@localhost ~]$ mysql --version mysql Ver 8.0.23 for Linux on x86_64 (MySQL Community Server - GPL)
(2)下载安装包(https://downloads.mysql.com/archives/c-j/)后解压:
必须下载Platform Independent版本,因为只有该版本的安装包才有mysql-connector-java-5.-bin.jar文件,用于安装Archiver Appliance。
1.3 JDK安装
(1)下载二进制安装包
http://www.oracle.com/technetwork/java/javase/downloads/index.html (2)解压后将其放置于/home/dongxw/jdk-16.0.2,并定义其可执行文件所在位置的环境变量:
[dongxw@localhost ~]$ vim ~/.bashrc
…
JAVA_HOME=$HOME/jdk-16.0.2
PATH=$JAVA_HOME/bin:$HOME/modules/cs-studio:$PATH:$HOME/.local/bin
export PATH
[dongxw@localhost ~]$ . ~/.bashrc
1.4 Apache Tomcat安装
下载安装包,解压后将其放置于/home/dongxw/apache-tomcat/apache-tomcat-9.0.52
http://tomcat.apache.org/
1.5 Archiver Appliance安装
1. 单机安装
(1)利用安装脚本进行安装的准备工作
利用install_scripts/single_machine_install.sh脚本安装之前,必须的安装配置步骤包括:
1) MySQL安装和新建archappl用户并赋予权限,创建archappl数据库
2) JDK安装
3) mysql-connector-java-8.0.23.tar.gz安装包(内含mysql-connector-java-5.-bin.jar文件)的下载并解压
4) apache-tomcat-9.0.52.tar.gz安装包的下载
5) 环境变量JAVA_HOME的设置
(若利用single_machine_install.sh脚本安装则无需此步骤)
6) Archiver Appliance运行目录的新建
(例如将其建立为$HOME/modules/Tomcat_instances)
(2)下载安装包:
https://github.com/slacmshankar/epicsarchiverap/releases/download/v0.0.1_SNAPSHOT_13-Nov-2019/archappl_v0.0.1_SNAPSHOT_13-November-2019T15-45-42.tar.gz 该安装包内部文件如下,若下错包,则包内不是这些文件:
[dongxw@localhost ArchiverAppliance]$ ll
total 150532
-rw-r--r--. 1 dongxw dongxw 11358 Nov 14 2019 Apache_2.0_License.txt
-rw-r--r--. 1 dongxw dongxw 37665099 Nov 14 2019 engine.war
-rw-r--r--. 1 dongxw dongxw 36181758 Nov 14 2019 etl.war
drwxr-xr-x. 2 dongxw dongxw 255 Aug 30 23:07 install_scripts
-rw-r--r--. 1 dongxw dongxw 3520 Nov 14 2019 LICENSE
-rw-r--r--. 1 dongxw dongxw 42169666 Nov 14 2019 mgmt.war
-rw-r--r--. 1 dongxw dongxw 2009 Nov 14 2019 NOTICE
-rwxr-xr-x. 1 dongxw dongxw 7991 Nov 14 2019 quickstart.sh
-rw-r--r--. 1 dongxw dongxw 43662 Nov 14 2019 RELEASE_NOTES
-rw-r--r--. 1 dongxw dongxw 38045558 Nov 14 2019 retrieval.war
drwxr-xr-x. 3 dongxw dongxw 46 Aug 30 15:11 sample_site_specific_content
(3)利用安装脚本进行安装
以上准备工作完成后,运行install_scripts/single_machine_install.sh脚本。
1) 首先选择Archiver Appliance运行目录:
2) 选择apache-tomcat-9.0.52.tar.gz安装包:
3) 选择mysql-connector-java-5.-bin.jar文件:
4) 确认由脚本生成ARCHAPPL_APPLIANCES环境变量:
5) 确定MySQL数据库的登陆用户和数据库:
6) 暂时不需要指定policies.py文件:
7) 安装成功:
[dongxw@localhost Tomcat_instances]$ ll
total 16
drwxrwxr-x. 9 dongxw dongxw 220 Aug 31 10:09 apache-tomcat-9.0.52
-rw-rw-r--. 1 dongxw dongxw 484 Aug 31 10:10 appliances.xml
-rwxrwxr-x. 1 dongxw dongxw 2232 Aug 31 10:11 deployRelease.sh
drwxrwxr-x. 7 dongxw dongxw 69 Aug 31 10:10 engine
drwxrwxr-x. 7 dongxw dongxw 69 Aug 31 10:10 etl
drwxrwxr-x. 7 dongxw dongxw 69 Aug 31 10:10 mgmt
drwxrwxr-x. 7 dongxw dongxw 69 Aug 31 10:10 retrieval
-rwxrwxr-x. 1 dongxw dongxw 4412 Aug 31 10:11 sampleStartup.sh
2. 集群安装
Archiver Appliance具有集群功能,开启的每个Archiver Appliance服务都是一个appliance,具有一个独特的identity,这些不同的appliance可以构成集群。集群中所有appliance都具有相同的appliances.xml文件,用于定义集群中所有appliance所在的主机IP和端口号等。
向集群中新增appliance时,要注意修改集群中所有appliances.xml文件,向其中添加新增appliance的IP和端口号信息;并重启集群中所有appliance。
若新增的appliance与当前appliance所在主机不同,仍可以采用上述方式在新增主机上进行安装;但若要在当前已安装了appliance的主机上新增appliance,在采用上述方式安装后,还需要额外的配置步骤:
(1)修改appliances.xml,向其中添加新增appliance的IP和端口号信息。要注意,同一主机上的不同appliance需设置不同的端口。
[user@localhost Tomcat_instances1]$ vi appliances.xml
<appliances>
<appliance>
<identity>appliance0</identity>
<cluster_inetport>192.168.200.103:16670</cluster_inetport>
<mgmt_url>http://192.168.200.103:17665/mgmt/bpl</mgmt_url>
<engine_url>http://192.168.200.103:17666/engine/bpl</engine_url>
<etl_url>http://192.168.200.103:17667/etl/bpl</etl_url>
<retrieval_url>http://192.168.200.103:17668/retrieval/bpl</retrieval_url>
<data_retrieval_url>http://192.168.200.103:17668/retrieval</data_retrieval_url>
</appliance>
<appliance>
<identity>appliance1</identity>
<cluster_inetport>192.168.200.103:16671</cluster_inetport>
<mgmt_url>http://192.168.200.103:17675/mgmt/bpl</mgmt_url>
<engine_url>http://192.168.200.103:17676/engine/bpl</engine_url>
<etl_url>http://192.168.200.103:17677/etl/bpl</etl_url>
<retrieval_url>http://192.168.200.103:17678/retrieval/bpl</retrieval_url>
<data_retrieval_url>http://192.168.200.103:17678/retrieval</data_retrieval_url>
</appliance>
<appliance>
<identity>appliance2</identity>
<cluster_inetport>192.168.200.104:16670</cluster_inetport>
<mgmt_url>http://192.168.200.104:17665/mgmt/bpl</mgmt_url>
<engine_url>http://192.168.200.104:17666/engine/bpl</engine_url>
<etl_url>http://192.168.200.104:17667/etl/bpl</etl_url>
<retrieval_url>http://192.168.200.104:17668/retrieval/bpl</retrieval_url>
<data_retrieval_url>http://192.168.200.104:17668/retrieval</data_retrieval_url>
</appliance>
<appliance>
<identity>appliance3</identity>
<cluster_inetport>192.168.200.104:16671</cluster_inetport>
<mgmt_url>http://192.168.200.104:17675/mgmt/bpl</mgmt_url>
<engine_url>http://192.168.200.104:17676/engine/bpl</engine_url>
<etl_url>http://192.168.200.104:17677/etl/bpl</etl_url>
<retrieval_url>http://192.168.200.104:17678/retrieval/bpl</retrieval_url>
<data_retrieval_url>http://192.168.200.104:17678/retrieval</data_retrieval_url>
</appliance>
</appliances>
(2)新增appliance的运行目录为Tomcat_instances1,安装完后修改该目录下的{mgmt, engine, etl, retrieval}/conf/server.xml文件中的端口号信息,与appliance.xml中该appliance的信息匹配。以Tomcat_instances1/retrieval/conf/server.xml为例:
...
# 将此处默认的port="17668"改为新增appliance的retrieval端口号
<Connector connectionTimeout="20000" port="17678" protocol="HTTP/1.1" redirectPort="8443"/>
<!-- A "Connector" using the shared thread pool-->
...
上述修改完后,重启集群中所有appliance。
如图所示,即为两台主机上分别各有两个appliance的集群效果:
3. 设置网页身份验证登录(非必需)
在 …/Tomcat_instances/mgmt/conf/tomcat-users.xml 文件的 <tomcat-users> 标签中添加:
<role rolename="admin"/>
<user username="admin" password="admin" roles="admin"/>
在 …/Tomcat_instances/mgmt/webapps/mgmt/WEB-INF/web.xml 或 …/Tomcat_instances/mgmt/conf/web.xml 文件的 <web-app> 标签中添加:
<security-constraint>
<web-resource-collection>
<web-resource-name>admin login</web-resource-name>
<url-pattern>/ui/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>admin login</realm-name>
</login-config>
<security-role>
<role-name>admin</role-name>
</security-role>
web服务器专题:tomcat(三)tomcat-users.xml 配置文件Tomcat tomcat-users.xml用户配置详解
二、安装过程中可能出现的问题
- 在脚本运行过程中,会调用一些python脚本或命令。由于该套安装包中涉及到python处,都利用了系统环境变量来自动搜索当前PATH中定义的python解释器,这就可能调用到python3解释器;而相应的python语句(尤其是print语句)都是以python2的形式编写的,因此可能触发语法错误。该问题有两种解决方法:
1) 修改PATH中定义的python解释器,将python2的路径放在最前边。例如:
export PATH=/usr/bin/: $ PATH
ls /usr/bin/python /usr/bin/python2.7
- 2) 将安装包中各处的python解释器指定为python2。例如:
single_machine_install.sh, line 333: WARSRC_DIR=`/usr/bin/python2.7 -c …
deployMultipleTomcats.py, line 1: #!/usr/bin/python2.7
addMysqlConnPool.py, line 1: #!/usr/bin/python2.7
- 集群中某些appliance在自己主机上的Status显示“Working”,但在其他主机上会显示“Stopped -engine/etl/retrieval”;或自己主机上的Tomcat_instances/mgmt/logs/arch.log中报错如下:
[http-nio-17665-exec-9] ERROR org.epics.archiverappliance.utils.ui.GetUrlContent - Exception getting contents of internal URL http://192.168.200.104:17676/engine/bpl/getApplianceMetrics
org.apache.http.conn.HttpHostConnectException: Connect to 192.168.200.104:17676 [/192.168.200.104] failed:
这是由于{mgmt, engine, etl, retrieval}/conf/server.xml文件中的端口号信息未与appliances.xml中该appliance的端口号信息匹配。
apache tomcat会按照conf/server.xml文件中的端口号信息启动相应的tomcat instance,而Archiver Appliance集群按照appliances.xml的索引读取不同appliance的端口号信息。读取的端口号并未被apache tomcat启用监听时,就会产生上述错误。
三、软件运行
3.1 防火墙设置
为了使其它机器可以访问Archiver Appliance的Web操作界面,可以直接关闭RHEL7操作系统自带的防火墙,也可以在不关闭防火墙的情况下配置防火墙允许指定端口。
3.2 存储设置
(1) 创建RAMDisk作为短期存储
首先查看系统内存大小,用来确定 RAMDisk 的容量:
$ free -h # 系统内存16GB
total used free shared buff/cache available
Mem: 15G 6.8G 202M 180M 8.2G 7.9G
Swap: 7.7G 139M 7.6G
分配RAMDisk容量为2GB,个数为1:
sudo modprobe brd rd_nr=1 rd_size=2097152 max_part=0
该操作可以创建路径为 /dev/ram0 的 RAMDisk。
将 /arch/sts/ArchiverStore 软链接到 /dev/ram0,作为短期存储路径:
sudo mkdir -p /arch/sts
sudo ln -s /dev/ram0 /arch/sts/ArchiverStore
(2) 创建硬盘中相应路径作为中、长期存储
sudo mkdir -p /arch/mts/ArchiverStore
sudo mkdir -p /arch/lts/ArchiverStore
3.3 使用脚本启停
利用安装后生成的 tomcat_instances/sampleStartup.sh 启停。
(1) 启动Archiver Appliance的命令如下:
./sampleStartup.sh start
(2) 停止Archiver Appliance的命令如下:
./sampleStartup.sh stop
注意:
(1) 当epics环境变量不在/opt/local/setEPICSEnv.sh 文件中时,应在运行前将脚本中下列行注释掉:
#source /opt/local/setEPICSEnv.sh。
(2) 若短期/中期/长期存储某一项未真正建立存储位置时,需要将脚本中其对应行注释掉:
#export ARCHAPPL_MEDIUM_TERM_FOLDER=/arch/mts/ArchiverStore
#export ARCHAPPL_LONG_TERM_FOLDER=/arch/lts/ArchiverStore
否则应在脚本中将其指向对应的存储位置。
(3) 启动Archiver Appliance之前应确保 MySQL 服务已开启。