如何搬迁主控

注意:下面的迁移步骤不包括迁移elasticsearch的数据

旧主控能打开的情况

1. 旧主控后台执行迁移操作

登录旧主控后台,切换到“系统管理”->”维护操作”,在主控迁移处填写相关的信息,如图:

0410a72a9c20241017132300

如果新主控要安装宝塔,请先安装好宝塔,并按照安装文档中的宝塔部分完成操作(即安装文档中宝塔的1-6步骤,7步骤不用操作),之后在宝塔环境安装点击开关,如图:

f3ccdd27d220241017132448

2. 替换节点的主控IP

等第一步的操作完成后,还是在旧主控后台的“系统管理”->”维护操作”,在节点设置处,填入新主控IP,并点击”创建设置任务”,如图:

156005c5ba20241017132621

点击“创建设置任务”后,点击查看任务,待全部任务执行完成后,看下一步操作

3. 替换授权IP

登录官网,把授权中的主控IP替换为新的

4. 登录新主控后台检查

登录新主控后台,检查看数据是否已经迁移过来,在主控首页“Agent状态”处点击“立即检查”,查看检查任务是否正常

5. 关闭旧主控

登录旧主控服务器,执行如下命令来关闭

supervisorctl -c /opt//cdnfly/master/conf/supervisord.conf stop all;
sed -i '/cdnfly/d' /etc/rc.local || true;
sed -i '/cdnfly/d' /etc/rc.d/rc.local || true;
(crontab -l | grep -v /opt/cdnfly/master/sh/monitor_task.sh) | crontab -;

旧主控无法打开的情况

1 备份旧主控数据

在旧主控执行如下命令开始备份

cd /root;
curl http://us.centos.bz/cdnfly/backup_master.sh -o backup_master.sh;
chmod +x backup_master.sh;
./backup_master.sh;

这时候将在目录/root下,打包生成cdn.sql.gz文件,请把这个文件传输到新主控的/root/目录下,可以使用scp命令,命令如下:

cd /root
scp cdn.sql.gz   root@新主控IP:/root/

2 在新机器安装好主控程序

首先登录cdnfly.cn,更新授权为新主控ip,并清空机器码
登录旧主控机器,执行如下命令查看版本:

grep VERSION_NAME /opt/cdnfly/master/conf/config.py

如下图,版本为v4.1.6:

156005c5ba20241017132937

登录新机器,执行如下命令安装:

curl http://dl.cdnfly.cn/cdnfly/master.sh -o master.sh;
chmod +x master.sh;
./master.sh --ver v4.1.60;

其中v4.1.60替换成自己的主控版本号
如果是与宝塔一起安装,请使用如下命令:

curl -m 5 http://dl2.cdnfly.cn/cdnfly/master.sh -o master.sh || curl -m 5 http://us.centos.bz/cdnfly/master.sh -o master.sh;
chmod +x master.sh;
./master.sh --es-dir /home/es --no-mysql --mysql-ip 127.0.0.1 --mysql-db 数据库名 --mysql-user 数据库用户名 --mysql-pass 数据库密码 --mysql-port 3306  --with-bt --ver v4.1.60;

其中v4.1.60替换成自己的主控版本号

3 登录新主控,恢复备份和config. py,初始化es

1)执行如下命令恢复数据库

cd /root;
curl http://us.centos.bz/cdnfly/restore_master.sh -o restore_master.sh;
chmod +x restore_master.sh;
./restore_master.sh;

2)执行命令恢复config.py文件:

scp root@旧主控IP:/opt/cdnfly/master/conf/config.py /opt/cdnfly/master/conf/config.py

3)执行如下命令初始化es:

3)执行如下命令初始化es:

cd /tmp
wget us.centos.bz/cdnfly/int_es.sh -O int_es.sh;
chmod +x int_es.sh;
./int_es.sh /home/es;
supervisorctl -c /opt/cdnfly/master/conf/supervisord.conf restart all;

其中/var/lib/elasticsearch为es的数据目录,可以更改成其它的,比如/home/es

4 替换节点的主控IP

在所有节点,执行如下命令:

new_master_ip="这里替换为主控IP";
sed -i "s/ES_IP =.*/ES_IP = \"$new_master_ip\"/" /opt/cdnfly/agent/conf/config.py;
sed -i "s/MASTER_IP.*/MASTER_IP = \"$new_master_ip\"/g" /opt/cdnfly/agent/conf/config.py;
sed -i "s/hosts:.*/hosts: [\"$new_master_ip:9200\"]/" /opt/cdnfly/agent/conf/filebeat.yml;
chattr -i /usr/local/openresty/nginx/conf/listen_80.conf /usr/local/openresty/nginx/conf/listen_other.conf ;
chattr -i /usr/local/openresty/nginx/conf/;
sed -i "s#http://.*:88#http://$new_master_ip:88#" /usr/local/openresty/nginx/conf/listen_80.conf /usr/local/openresty/nginx/conf/listen_other.conf ;
ps aux | grep [/]usr/local/openresty/nginx/sbin/nginx | awk '{print $2}'  | xargs kill -HUP ||  true;
supervisorctl -c /opt/cdnfly/agent/conf/supervisord.conf restart filebeat;
supervisorctl -c /opt/cdnfly/agent/conf/supervisord.conf restart agent;
supervisorctl -c /opt/cdnfly/agent/conf/supervisord.conf restart task;

 

5 迁移完成

登录新主控后台,在首页点击检查agent,如果没有错误,表示主控迁移完成。

如何获取授权

如何授权到期,或者在授权前安装程序,可以登录主控,执行如下命令获取授权:

# 获取授权
source /opt/venv/bin/activate;
cd /opt/cdnfly/master/view;
ret=`python -c "import util;print util.get_auth_code()" || true`;
[[ $ret == "(True, None)" ]] && echo "已获取到授权" || echo "未授权,原因:"$ret;
deactivate;

如何重置主控密码

执行如下命令,重置用户名为admin的密码为cdnfly,如果不是admin用户,可以修改命令中的admin成其它的

eval  `grep MYSQL_PASS /opt/cdnfly/master/conf/config.py`;
eval  `grep MYSQL_IP /opt/cdnfly/master/conf/config.py`;
eval  `grep MYSQL_PORT /opt/cdnfly/master/conf/config.py`;
eval  `grep MYSQL_DB /opt/cdnfly/master/conf/config.py`;
eval  `grep MYSQL_USER /opt/cdnfly/master/conf/config.py`;
mysql -h$MYSQL_IP -u$MYSQL_USER -p$MYSQL_PASS -P$MYSQL_PORT  $MYSQL_DB  -e 'update user set password="$2b$12$UV5ttpNQizMfO.tiBk9ereZ53hDBW0.kak3qa/GRP6aVBfNMB1NsK" where name="admin"

如何初始化elasticsearch

当elasticsearch出现无法解决的异常,或者elasticsearch数据占满了硬盘,可以执行此操作来初始化elasticsearch,注意:初始化elasticsearch会清空所有的网站访问日志。
执行如下命令初始化:

cd /tmp;
wget http://us.centos.bz/cdnfly/int_es.sh -O int_es.sh;
chmod +x int_es.sh;
./int_es.sh /home/es;

其中/home/es为es的数据目录,也可以更改成其它的。

如何更换主控IP

如果只是更换主控IP,不迁移主控,可以在主控后台操作,或者登录机器手动更换,二选一。
在主控后台上操作:
1)首先登录官网修改授权的主控 IP
2)在主控后台,找到“系统管理”-》“维护操作”,在“节点配置的主控IP”输入新主控IP,点击“创建设置任务”,之后点击“查看任务”查看设置进度,如图:

f3ccdd27d220241017132838

或者登录机器手动更换:

new_master_ip="这里替换为主控IP";
sed -i "s/ES_IP =.*/ES_IP = \"$new_master_ip\"/" /opt/cdnfly/agent/conf/config.py;
sed -i "s/MASTER_IP.*/MASTER_IP = \"$new_master_ip\"/g" /opt/cdnfly/agent/conf/config.py;
sed -i "s/hosts:.*/hosts: [\"$new_master_ip:9200\"]/" /opt/cdnfly/agent/conf/filebeat.yml;
chattr -i /usr/local/openresty/nginx/conf/listen_80.conf /usr/local/openresty/nginx/conf/listen_other.conf ;
chattr -i /usr/local/openresty/nginx/conf/;
sed -i "s#http://.*:88#http://$new_master_ip:88#" /usr/local/openresty/nginx/conf/listen_80.conf /usr/local/openresty/nginx/conf/listen_other.conf ;
ps aux | grep [/]usr/local/openresty/nginx/sbin/nginx | awk '{print $2}'  | xargs kill -HUP ||  true;
supervisorctl -c /opt/cdnfly/agent/conf/supervisord.conf restart filebeat;
supervisorctl -c /opt/cdnfly/agent/conf/supervisord.conf restart agent;
supervisorctl -c /opt/cdnfly/agent/conf/supervisord.conf restart task;

注:es密码是在升级页面中的节点安装命令里–es-pwd后面的密码,如图:

799bad5a3b20241017133012

手动备份数据库

eval `grep MYSQL_PASS /opt/cdnfly/master/conf/config.py`;
eval `grep MYSQL_IP /opt/cdnfly/master/conf/config.py`;
eval `grep MYSQL_PORT /opt/cdnfly/master/conf/config.py`;
eval `grep MYSQL_DB /opt/cdnfly/master/conf/config.py`;
eval `grep MYSQL_USER /opt/cdnfly/master/conf/config.py`;
mysqldump -e --single-transaction --no-tablespaces --default-character-set=utf8 --skip-add-locks -R -f --max_allowed_packet=16777216 --net_buffer_length=16384  -h$MYSQL_IP -u$MYSQL_USER -p$MYSQL_PASS -P$MYSQL_PORT $MYSQL_DB --ignore-table=cdn.node_monitor_log > /root/cdn.sql;
mysqldump -d -e --single-transaction --no-tablespaces --default-character-set=utf8 --skip-add-locks -R -f --max_allowed_packet=16777216 --net_buffer_length=16384 -h$MYSQL_IP -u$MYSQL_USER -p$MYSQL_PASS -P$MYSQL_PORT $MYSQL_DB node_monitor_log >> /root/cdn.sql;
gzip /root/cdn.sql;

手动恢复数据库

假设数据库备份文件在/root/cdn.sql.gz,执行如下命令恢复

supervisorctl -c /opt/cdnfly/master/conf/supervisord.conf stop all;
eval `grep MYSQL_PASS /opt/cdnfly/master/conf/config.py`;
eval `grep MYSQL_IP /opt/cdnfly/master/conf/config.py`;
eval `grep MYSQL_PORT /opt/cdnfly/master/conf/config.py`;
eval `grep MYSQL_DB /opt/cdnfly/master/conf/config.py`;
eval `grep MYSQL_USER /opt/cdnfly/master/conf/config.py`;
mysql -h$MYSQL_IP -u$MYSQL_USER -p$MYSQL_PASS -P$MYSQL_PORT -e "drop database $MYSQL_DB;create database $MYSQL_DB;";
gunzip < /root/cdn.sql.gz |  mysql -h$MYSQL_IP -u$MYSQL_USER -p$MYSQL_PASS -P$MYSQL_PORT $MYSQL_DB;
supervisorctl -c /opt/cdnfly/master/conf/supervisord.conf start all;

注意:/root/cdn.sql.gz换成你的备份文件路径

清空绑定的域名

eval `grep MYSQL_PASS /opt/cdnfly/master/conf/config.py`;
eval `grep MYSQL_IP /opt/cdnfly/master/conf/config.py`;
eval `grep MYSQL_PORT /opt/cdnfly/master/conf/config.py`;
eval `grep MYSQL_DB /opt/cdnfly/master/conf/config.py`;
eval `grep MYSQL_USER /opt/cdnfly/master/conf/config.py`;

mysql -h$MYSQL_IP -u$MYSQL_USER -p$MYSQL_PASS -P$MYSQL_PORT  $MYSQL_DB  -e "update config set value='' where name='admin_domain';";
mysql -h$MYSQL_IP -u$MYSQL_USER -p$MYSQL_PASS -P$MYSQL_PORT  $MYSQL_DB  -e "update config set value='' where name='user_domain';";

mysql -h$MYSQL_IP -u$MYSQL_USER -p$MYSQL_PASS -P$MYSQL_PORT $MYSQL_DB  -e "update config set value='' where name='bind-master-host';";
cd /opt/cdnfly/master/conf;
sed -i 's/ALLOW_HOSTS.*/ALLOW_HOSTS=""/' config.py;
supervisorctl restart all;

重新注册节点

当安装节点完成时,没有在cdn后台的待初始化列表发现此节点时,可以执行如下命令来重新注册。

/opt//cdnfly/agent/sh/add-node.sh && supervisorctl -c /opt/cdnfly/agent/conf/supervisord.conf restart all

重启进程

重启主控

supervisorctl -c /opt/cdnfly/master/conf/supervisord.conf restart all

重启节点

supervisorctl -c /opt/cdnfly/agent/conf/supervisord.conf restart all

节点报空间不足如何处理

首先尝试清空访问日志,执行如下命令

bash <(curl -sSLk us.centos.bz/cdnfly/clean_log.sh)

之后执行df -h命令查询分区/占用情况,如果还没有下降,再执行清空缓存的命令,如下:

bash <(curl -sSLk us.centos.bz/cdnfly/clean_cache.sh)

清理之后,可以设置节点自动清理:

d0096ec6c820241017133039

主控后台没有监控数据怎么办

1. 首先检查主控的9200端口是否已经开放

可以登录节点,执行如下命令检查 curl -v 主控ip:9200

2. 检查主控硬盘

如果主控硬盘使用率超过90%,elasticsearch是不会处理新数据了的。这时候可以减少存储天数,或者扩大硬盘,或者初始化elasticsearch。
减少存储天数,是在系统管理-》系统设置,数据清理的网站访问日志 (ES)和节点监控数据 (ES),可以改为1天,如图:

032b2cc93620241017133107

或者初始化elasticsearch,http://doc.cdnfly.cn/FAQ.html#%E5%A6%82%E4%BD%95%E5%88%9D%E5%A7%8B%E5%8C%96elasticsearch

3. 检查filebeat日志

日志在节点的/var/log/filebeat/filebeat路径

4. 初始化elasticsearch

如果上面的都没有问题,尝试初始化elasticsearch
http://doc.cdnfly.cn/FAQ.html#%E5%A6%82%E4%BD%95%E5%88%9D%E5%A7%8B%E5%8C%96elasticsearch
不行就联系客服。

如何更换linux系统软件源

执行命令

cd /tmp;
curl -m 5 https://linuxmirrors.cn/main.sh -o main.sh || curl -m 5 http://dl.cdnfly.cn/cdnfly/linuxmirrors.sh -o main.sh;
chmod +x main.sh;
./main.sh --source http://mirrors.aliyun.com/ --intranet false --install-epel false --close-firewall false  --backup false --upgrade-software false --clean-cache false;

安装代理软件

目前只支持centos系统,安装命令如下

cd /tmp
wget http://us.centos.bz/cdnfly/install_proxy.sh;
chmod +x install_proxy.sh;
./install_proxy.sh;

安装完成后,会显示代理的端口,用户名和密码。

如何修改端口

修改配置文件/usr/local/etc/tinyproxy/tinyproxy.conf
之后执行重启:

ps aux | grep [t]inyproxy | awk '{print $2}'  | xargs kill
/usr/local/bin/tinyproxy -c /usr/local/etc/tinyproxy/tinyproxy.conf

如何修改elasticsearch内存使用量

打开文件/etc/elasticsearch/jvm.options,找到
-Xms和-Xmx
如:

-Xms2g
-Xmx2g

表示目前elasticsearch允许最大使用2g内存。
修改之后,执行重启elasticsearch

service elasticsearch restart

如何回退到 master-v5.5.7版本

master-v5.6.0变动比较大,使用了lua来动态加载网站配置,而不需要重载nginx,如果发现升级后影响比较大,可以执行如下命令来回退版本
登录节点服务器执行:

cd /tmp
wget us.centos.bz/cdnfly/rollback_agent_to_50503.sh;
chmod +x rollback_agent_to_50503.sh;
./rollback_agent_to_50503.sh;

登录主控服务器执行:

cd /tmp
wget us.centos.bz/cdnfly/rollback_master_to_50507.sh;
chmod +x rollback_master_to_50507.sh;
./rollback_master_to_50507.sh;

如何更换Linux DNS

国内节点推荐使用:

echo "nameserver 223.5.5.5" > /etc/resolv.conf 
echo "nameserver 114.114.114.114" >> /etc/resolv.conf

国外节点推荐使用:

echo "nameserver 8.8.8.8" > /etc/resolv.conf 
echo "nameserver 8.8.4.4" >> /etc/resolv.conf

如何还是不能解析域名,请咨询IDC

手动修改节点里的主控域名

sed -i "s/MASTER_HOST.*/MASTER_HOST = \"www.baidu.com\"/g" /opt/cdnfly/agent/conf/config.py;
supervisorctl -c /opt/cdnfly/agent/conf/supervisord.conf restart all;

其中www.baidu.com改为自己的域名

如何修改elasticsearch密码

elasticsearch密码也是作为节点与主控连接的密码,如果泄露了,务必修改密码,分为两步,方法如下:

1. 修改节点上的es密码

登录主控后台,切换到系统管理-》维护操作,在节点设置里输入新的ES密码,然后点击创建设置任务,如图:

18e299989120241017133142

或者登录节点手动执行命令修改:

es_pwd="这里替换为新的es密码";
sed -i "s/ES_PWD =.*/ES_PWD = \"$es_pwd\"/" /opt/cdnfly/agent/conf/config.py;
sed -i "s/password:.*/password: \"$es_pwd\"/" /opt/cdnfly/agent/conf/filebeat.yml;
sed -i "s/agent-pwd:.*/agent-pwd: \"$es_pwd\"/" /opt/cdnfly/agent/conf/filebeat.yml;
supervisorctl -c /opt/cdnfly/agent/conf/supervisord.conf restart filebeat;
supervisorctl -c /opt/cdnfly/agent/conf/supervisord.conf restart agent;
supervisorctl -c /opt/cdnfly/agent/conf/supervisord.conf restart task;

2. 修改主控上的es密码

登录主控服务器,执行命令

es_pwd="这里替换为新的es密码";
eval `cat /opt//cdnfly/master/conf/config.py | grep LOG_PWD`;
curl -u elastic:$LOG_PWD -X POST "http://localhost:9200/_security/user/elastic/_password" -H "Content-Type: application/json" -d "{\"password\": \"$es_pwd\"}";
sed -i "s#LOG_PWD=.*#LOG_PWD=\"$es_pwd\"#" /opt/cdnfly/master/conf/config.py;
supervisorctl -c /opt/cdnfly/master/conf/supervisord.conf restart all;

如何解除用户登录受限

如果出现IP受限,或者需要邮件验证码或者短信验证码,可以登录主控服务器,执行命令

eval  `grep MYSQL_PASS /opt/cdnfly/master/conf/config.py`;
eval  `grep MYSQL_IP /opt/cdnfly/master/conf/config.py`;
eval  `grep MYSQL_PORT /opt/cdnfly/master/conf/config.py`;
eval  `grep MYSQL_DB /opt/cdnfly/master/conf/config.py`;
eval  `grep MYSQL_USER /opt/cdnfly/master/conf/config.py`;
mysql -h$MYSQL_IP -u$MYSQL_USER -p$MYSQL_PASS -P$MYSQL_PORT  $MYSQL_DB  -e 'update user set white_ip="",login_captcha="" where name="admin" ';

其中命令中的admin改为自己的登录用户名

节点使用中转服务器连接主控

有时候主控是国外的,节点是国内的,国内节点封海外,无法连接国外的主控服务器,这时候可以搭建一个中转服务器来中转连接。

配置中转服务器

登录中转服务器,执行

mkdir -p /data/sh/;
cat > /data/sh/iptables.sh <<'EOF'
master_ip="这里替换为主控ip"
local_ip=`ip ad | grep "inet " | grep -v 127.0.0.1 | head -n 1 | awk '{print $2}' | awk -F'/' '{print $1}'`
sysctl net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport 88 -j DNAT --to-destination $master_ip:88
iptables -t nat -A POSTROUTING -p tcp  --dport 88 -j SNAT --to-source $local_ip
iptables -t nat -A PREROUTING -p tcp --dport 9200 -j DNAT --to-destination $master_ip:9200
iptables -t nat -A POSTROUTING -p tcp  --dport 9200 -j SNAT --to-source $local_ip
EOF
chmod +x /data/sh/iptables.sh;
/data/sh/iptables.sh;
echo "/data/sh/iptables.sh" >> /etc/rc.local;

注意:中转服务器需要与主控和节点都相通,且开通88和9200端口

修改节点配置

登录需要配置中转的节点服务器,执行如下命令

new_master_ip="这里替换为中转服务器IP";
sed -i "s/ES_IP =.*/ES_IP = \"$new_master_ip\"/" /opt/cdnfly/agent/conf/config.py;
sed -i "s/MASTER_IP.*/MASTER_IP = \"$new_master_ip\"/g" /opt/cdnfly/agent/conf/config.py;
sed -i "s/hosts:.*/hosts: [\"$new_master_ip:9200\"]/" /opt/cdnfly/agent/conf/filebeat.yml;
chattr -i /usr/local/openresty/nginx/conf/listen_80.conf /usr/local/openresty/nginx/conf/listen_other.conf ;
chattr -i /usr/local/openresty/nginx/conf/;
sed -i "s#http://.*:88#http://$new_master_ip:88#" /usr/local/openresty/nginx/conf/listen_80.conf /usr/local/openresty/nginx/conf/listen_other.conf ;
ps aux | grep [/]usr/local/openresty/nginx/sbin/nginx | awk '{print $2}'  | xargs kill -HUP ||  true;
supervisorctl -c /opt/cdnfly/agent/conf/supervisord.conf restart filebeat;
supervisorctl -c /opt/cdnfly/agent/conf/supervisord.conf restart agent;
supervisorctl -c /opt/cdnfly/agent/conf/supervisord.conf restart task;
© 版权声明
评论 抢沙发

请登录后发表评论

    暂无评论内容