部署维护
部署维护
基础部署
\1. 部署社区版 6.0.3 的基础包以及监控日志包,请提前修改域名为 bkce-{考试 id}.com,paas 平台 admin 密码为 bkce-{考试 id}。
日常维护
\1. 内存修改
-
修改 es 的 jvm 最大堆和最小堆,分别设置为 2G 2G
# 需要修改/etc/elasticsearch/jvm.options文件中Xms、Xmx大小 -Xms2g -Xmx2g
-
修改 job-gateway 的 jvm 最大堆和最小堆,分别设置为 1G 1G
cat /usr/lib/systemd/system/bk-job-gateway EnvironmentFile=-/etc/sysconfig/bk-job-gateway # 获取job启动文件调用文件 cat /etc/sysconfig/bk-job-gateway JAVA_OPTS="-Xms1024m -Xmx1024m"
\2. 为 consul 配置 ui 界面,配置成功后 curl http://127.0.0.1:8500 应该返回 302。
# 开启ui
1 选择部署 nginx 的服务器,修改 consul 的启动命令行参数 (/etc/sysconfig/consul),在 CMD_OPTS 中追加命令行参数 -ui
2 重启 consul: systemctl restart consul
3 验证是否生效:curl -sL http://127.0.0.1:8500/ | grep CONSUL_VERSION 如果有返回说明 webUI 正常开启
# 配置nginx 302
cat /usr/local/openresty/nginx/conf/conf.d
server {
listen 80;
server_name consul.bkce-6.com;
access_log /data/bkce/logs/nginx/consul_ui_access.log main;
location / {
proxy_pass http://127.0.0.1:8500;
}
}
# 重新加载nginx
systemctl reload openresty
\3. 使用 nginx 配置反向代理,代理至 consul ,域名设置为 consul.bkce-{考试 id}.com,端口为 80。
\4. 为 nginx consul 页面配置 nginx auth 认证,账号为 consul 密码为 bkce-{考试 id}。
server {
listen 80;
server_name consul.bkce-6.com;
access_log /data/bkce/logs/nginx/consul_ui_access.log main;
auth_basic "Input Password:";
auth_basic_user_file "/opt/pass";
location / {
proxy_pass http://127.0.0.1:8500;
}
}
[root@proxy ~]# yum -y install httpd-tools
[root@proxy ~]# htpasswd -c /opt/pass tom # 创建密码文件
日志分析
新建
/data/awk
目录,以下题目的 执行语句与输出内容均放到该目录下。1.txt 2.txt 3.txt
分析 nginx 的 access_web_paas 日志
\1. 过滤日志的: IP 请求方法 URL useragent 。
cat paas_web_access.log | awk -F '"' '{print $6}' > /data/awk/1.txt
\2. 结果中统计IP+url+useragent相同访问次数,并输出统计次数、IP、URL、useragent。
sed -r 's/\[.*\]/ /g' paas_web_access.log | awk -F '"' '{print $1,$4,$6}' | uniq -c | sort -k1 -rn
\3. 查看当前系统所有 TCP 连接中各种状态的连接数。
netstat -tan|awk '$1~/tcp/{print $NF}'|sort|uniq -c|sort -nr
脚本编写
编写的脚本均放到
/data/shell/
目录下。1.sh 2.sh
\1. 写一个脚本,
#!/bin/bash
for i in `seq 1 255`
do
ping -c 1 10.0.6.$i &>/dev/null
if [ $? -eq 0 ]
then
echo -e "10.0.6.$i is up."
fi
done
#!/bin/bash
rpm -ivh | grep nmap
if [ $? != 0 ]
then
yum -y install nmap
fi
nmap 10.0.6.0/23
\2. 脚本支持参数两个正整数,输出 N-M 的累加值(N-M 代表俩个参数),若是参数不符合,输出错误。
#! /bin/bash
read -p "Please enter the starting number :" star
read -p "Please enter the ending number :" end
count(){
sum=0
for i in `seq $star $end`; do
sum=$(($sum + $i))
done
echo $sum
}
if expr $star + 1 &>/dev/null && expr $end + 1 &>/dev/null
then
count
else
echo "请输入整数"
fi
第三题脚本写在 nginx 所在服务器的 nginx 日志目录,新生成的目录就放在 nginx 日志目录。
\3. 实现 nginx 日志切割,脚本执行时切割备份 nginx 日志,生成当前时间 年-月-日:时:分:秒
格式的目录,并将切割的日志放到该目录下,脚本不能影响 nginx 正常运行,不能丢失任何日志内容。
#!/bin/bash
LOGS_PATH=/data/bkce/logs/nginx
CUR_LOGS_PATH=/data/bkce/logs/nginx
YESTERDAY=$(date "+%Y-%m-%d:%H:%M:%S")
mkdir /data/bkce/logs/nginx/$YESTERDAY
cp $CUR_LOGS_PATH/paas_web_access.log $LOGS_PATH/${YESTERDAY}/
节点扩容
以下操作均需要手动完成,不能借用蓝鲸现有脚本。
\1. 在新给到的机器上安装 consul ,并且加入到蓝鲸的 consul 集群,身份为 client。
1 安装consul(中控机下获取安装包)
#中控机器执行
cd /data/src/yum/
scp consul-* root@10.0.7.6:/opt
cd /etc/consul.d/
scp * root@10.0.7.6:/etc/consul.d/
#新机器执行
rpm -ivh /opt/consul-*
2 修改consul配置文件
[root@AGENT-7-6 consul.d]# cat /etc/consul.d/consul.json
{
"bind_addr": "10.0.7.6",
"log_level": "info",
"log_file": "/var/log/consul/consul.log",
"datacenter": "dc",
"data_dir": "/var/lib/consul",
"node_name": "AGENT-7-6", # 修改为当前主机名,避免冲突
"disable_update_check": true,
"enable_local_script_checks": true,
"encrypt": "YThoUFlFcnlaYmFzaTlPUWlGUEp3Ynd3VVRKcWZYWTM=",
"ports": {
"dns": 53,
"http": 8500
}
}
3 加入集群
[root@AGENT-7-6 consul.d]# cat auto_join.json
{
"retry_join": ["10.0.6.22","10.0.6.30","10.0.6.27","10.0.7.6"]
# 在中括号中添加当前主机IP
}
4 配置文件授权
chmod -R 777 /var/lib/consul/
chmod -R 777 /etc/consul.d/
5 启动consul
systemctl start consul
systemctl status consul
6 验证consul集群
yum install bind-utils -y # dig安装
[root@AGENT-7-6 consul]# dig consul.service.consul
consul.service.consul. 0 IN A 10.0.6.27
consul.service.consul. 0 IN A 10.0.6.30
consul.service.consul. 0 IN A 10.0.6.22
consul.service.consul. 0 IN A 10.0.7.6
\2. 在新机器上安装 mysql
1 安装consul(中控机下获取安装包)
#中控机器执行
cd /data/src/yum/
scp mysql-community-* root@10.0.7.6:/opt
#新机器执行
rpm -ivh mysql-community-* --nodeps --force
\3. 配置 mysql 为蓝鲸 mysql 的从库,并且同步数据。
- 修改my.cnf文件,配置server_id 、开启binlog
# master 库操作 (可选,默认开启)
# ./01-generate/dbadmin.env:BK_MYSQL_ADMIN_USER=root
#./01-generate/dbadmin.env:BK_MYSQL_ADMIN_PASSWORD=T2ISfGKoMERY #获取mysql密码
$ cat /etc/mysql/default.my.cnf
···
server-id=1 # master 及 slave 不可重复
log-bin=mysql-bin # 开启binlog
···
$ cd /data/bkce/service/mysql/bin/
$ ./mysql.sh restart # 通过启动脚本重启MySQL
# slave 库操作
$ grep 'password' /var/log/mysqld.log |head -n1 #获取mysql默认密码
$ cat /etc/my.cnf
...
server-id=2
log-bin=mysql=bin
...
$ systemctl start mysqld
- 主库创建同步用户
$ mysql --login-path=default-root # 登录mysql
grant replication slave on *.* to 'replica'@'172.21.1.%' identified by '123456';
flush privileges;
- 数据库全备并 导入从库
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Test123.'; #修改数据库密码(可选)
$ mysqldump -uroot -p -A >all_back.sql # -A --all-databases
$ scp all_back.sql 172.21.1.1:~ # 推送至从库主机
# 从库主机操作
$ mysql -uroot -p < /root/all_back.sql
- 获取master状态
flush table with read lock; # 为了备份数据的统一, 开启全局锁
UNLOCK TABLES; # 关闭全局锁
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000006 | 17896381 | | | |
+------------------+----------+--------------+------------------+-------------------+
- 从库配置同步binlog
$ mysql -uroot -p
change master to
master_host='172.21.1.1', # 主库地址
master_user='replica',
master_password='123456',
master_log_file='mysql-bin.000006', # 需要与主库获取到的一致
master_log_pos=17896381; # 同上
start slave; # 开启同步
show salve status\G # 查看是否成功
# 主要观察以下两个参数是否为Yes
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
\4. 将 mysql-slave 注册到 consul 的服务里面,并且配置健康检测。
$ cat /etc/consul.d/service/mysql-default.json
{
"service": {
"id": "mysql-default-e91348fe-a899-11eb-9b47-005056a20237",
"name": "mysql-default",
"address": "10.0.7.6", # 当前主机地址
"port": 3306,
"check": {
"tcp": "10.0.7.6:3306",
"interval": "10s",
"timeout": "3s"
}
}
} # 添加mysql到consul
$ dig mysql-default.service.consul
mysql-default.service.consul. 0 IN A 10.0.6.27