第一次模拟考
日常维护
1. 修改 es jvm 内存选项
# 登录 es 所在机器,打开 es 的jvm配置文件
vim /etc/elasticsearch/jvm.options
修改如下两行即可。
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms8g
-Xmx8g
2. 修改 job 内存选项
# 登录 job 所在机器,以下文件含有 job 各个服务的 jvm 内存配置。
ls /etc/sysconfig/ |grep job
bk-job-analysis
bk-job-backup
bk-job-config
bk-job-crontab
bk-job-execute
bk-job-gateway
bk-job-logsvr
bk-job-manage
3. 为 consul 配置 ui 界面
# 修改 nginx 所在机器的 consul 的配置文件,在 json 中添加一项 "ui": true,
vim /etc/consul.d/consul.json
{
"bind_addr": "10.0.6.54",
"log_level": "info", # 添加该行
"ui": true,
"log_file": "/var/log/consul/consul.log",
"datacenter": "dc",
"data_dir": "/var/lib/consul",
"node_name": "bkce-6-54",
"disable_update_check": true,
"enable_local_script_checks": true,
"encrypt": "d0lSRmFPSGVYQksyel9uT2NlcldoNVRRVzRQNlozQnQ=",
"ports": {
"dns": 53,
"http": 8500
}
}
# 重启服务
systemctl restart consul
# 测试,服务返回状态码为:301
curl -v http://127.0.0.1:8500
4. 为 consul ui 配置 nginx 反向代理
# 添加配置文件
vim /usr/local/openresty/nginx/conf/conf.d/consul.conf
server {
listen 80; # 监听端口
server_name consul.bkce-603.com; # server_name 配置自己的域名即可。
client_max_body_size 512m;
access_log /data/bkce/logs/nginx/consul_ui.log;
location / {
proxy_pass http://localhost:8500; # 转发到本地 8500 端口
proxy_pass_header Server;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_read_timeout 600;
}
}
# 重启服务
systemctl restart openresty.service
5. 配置 nginx 的 basic auth 验证。
首先安装 httpd-tools,因为我们需要使用 htpasswd 工具。
yum install -y httpd-tools
使用 htpasswd -c -d file username
生产密码文件。重复输入两次你需要配置的密码后,文件生成。
# htpasswd -c -d /data/pass_file consul
New password:
Re-type new password:
Adding password for user consul
6. 配置 nginx 的 basic auth。
修改配置文件 /usr/local/openresty/nginx/conf/conf.d/consul.conf
在 server 段添加即可 auth_basic
和 auth_basic_user_file
即可。
server {
listen 80; # 监听端口
server_name consul.bkce-603.com; # server_name 配置自己的域名即可。
client_max_body_size 512m;
access_log /data/bkce/logs/nginx/consul_ui.log;
auth_basic "consul"; # 开启 auth_basic
auth_basic_user_file /data/pass_file; # 指向生成的密码文件
location / {
proxy_pass http://localhost:8500;
proxy_pass_header Server;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_read_timeout 600;
}
}
重启服务
systemctl restart openresty.service
日志分析
1. 过滤日志的: IP 请求方法 URL useragent
cat paas_web_access.log |head -10 |awk '{printf "%s %s %s ",$1,$6,$7} { for (i=12;i<=(NF-1);i++){if(i<(NF-1)){printf "%s ",$i}else{print $i}}}' > 1.txt
2. 结果中统计IP+url+useragent相同访问次数,并输出统计次数、IP、URL、useragent
cat paas_web_access.log |head -10 |awk '{printf "%s %s ",$1,$7} { for (i=12;i<=(NF-1);i++){if(i<(NF-1)){printf "%s ",$i}else{print $i}}}' | sort | uniq -c
3. 查看当前系统所有 TCP 连接中各种状态的连接数
netstat -tnp |awk 'NR>2{++S[$6]} END{for (i in S) print i,S[i]}'
netstat -tnp |awk '/^tcp/{++S[$6]} END{for (i in S) print i,S[i]}'
集群扩容
1. 安装 mysql 和 consul
在节点机器添加蓝鲸的 yum 源。
# 蓝鲸 yum 信息
cat /etc/yum.repos.d/Blueking.repo
[bk-custom]
name=Blueking
baseurl=http://10.0.6.53:8080 # ip 为中控机
enabled=1
gpgcheck=0
# 在节点机器添加同样文件即可,手动添加或者 scp 过去都行。
# 刷新仓库信息
yum makecache
# 安装 mysql
yum install -y mysql-community-server
# 安装 consul
yum install -y consul
2. 配置 mysql
启动 mysql
# 启动 mysql
systemctl start mysqld
# 找到 mysql 预先设置的密码
grep password /var/log/mysqld.log
# 第一时间修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new pass';
配置主从同步,修改配置文件
[mysqld]
log-bin=/var/lib/mysql/mysql-bin # 开启binlog
server-id=2 # 配置 server-id 需要唯一
slave-skip-errors = all # 跳过主从复制出现的错误
重启服务
systemctl restart mysqld
同步数据,配置主从。
以下为主库操作
# 在主库备份
mysqldump [-u user] [-p password] --routines --single_transaction --master-data=2 --all-databases > all.sql
# --routines:导出存储过程和函数
# --single_transaction:导出开始时设置事务隔离状态,并使用一致性快照开始事务,然后unlock tables;而lock-tables是锁住一张表不能写操作,直到dump完毕。
# --master-data:默认等于1,将dump起始(change master to)binlog点和pos值写到结果中,等于2是将change master to写到结果中并注释。
# 创建同步使用的账号
mysql> grant all on *.* to 'sync'@'{此处修改为主库ip}' identified by 'sync';
以下为从库操作
# 从库导入数据
mysql [-u user] [-p password] < all.sql
# 查看 all.sql 文件中的 binlog 和 pos 的值
head -25 all.sql
# 配置主从
mysql> change master to master_host='172.27.16.17',
-> master_user='sync',
-> master_password='sync',
-> master_log_file='mysql-bin.000002',
-> master_log_pos=126887216;
mysql> start slave;
mysql> show slave status\G
如果 Slave_IO_Running
,Slave_SQL_Running
显示为 Yes,就成功了。
3. 配置 consul
找一台蓝鲸的机器:
# 将如下三个配置文件
scp /etc/consul.d/{auto_join.json,consul.json,recursors.json} {新节点ip}:/etc/consul.d/
新节点机器:
# 修改复制过来的配置文件
vi /etc/consul.d/consul.json
{
"bind_addr": "10.0.6.36", # 修改 bind 为自己 ip 地址
"log_level": "info",
"log_file": "/var/log/consul/consul.log",
"datacenter": "dc",
"data_dir": "/var/lib/consul",
"node_name": "bktest-6-36", # 修改节点名称
"disable_update_check": true,
"enable_local_script_checks": true,
"encrypt": "d0lSRmFPSGVYQksyel9uT2NlcldoNVRRVzRQNlozQnQ=",
"ports": {
"dns": 53,
"http": 8500
}
}
# 启动 consul 服务
nohup consul agent -config-dir=/etc/consul.d -config-dir=/etc/consul.d/service >> /var/log/consul/consul.log 2>&1 &
添加 mysql-bak 服务
# 添加 mysql-bak 配置文件
vi /etc/consul.d/service/mysql.json
{
"service": {
"id": "mysql-bac-test-test",
"name": "mysql-bak",
"address": "10.0.6.36",
"port": 3306,
"check": {
"tcp": "10.0.6.36:3306",
"interval": "10s",
"timeout": "3s"
}
}
}
# 重新加载
consul reload
验证
sed -i '1a nameserver 127.0.0.1' /etc/resolv.conf
dig mysql-bak.service.consul
努力到无能为力,拼搏到感动自己。