当前位置: 首页 > news >正文

网站建设与管理出来工资seo业务培训

网站建设与管理出来工资,seo业务培训,广告联盟平台挂机赚钱,做电子商务的网站1. MHA集群概述 集群的定义:多台服务器一起提供相同的服务,如(web集群)等。常见集群的分类: LB(负载均衡集群):服务器共同平均分摊处理客户端的多次连接请求。 HA(高可用…

1. MHA集群概述

  • 集群的定义:多台服务器一起提供相同的服务,如(web集群)等。
  • 常见集群的分类:
  1. LB(负载均衡集群):服务器共同平均分摊处理客户端的多次连接请求。
    HA(高可用集群):主备模式,主宕机后备用服务器自动接替工作。
  • 常见集群服务软件:
    LB:LVS、Nginx、haproxy等。
    HA:Keepalived、heartbeat、

1.1. 软件介绍

  • MHA(Master High Availability)
  • 由日本DeNA公司youshimaton通过perl脚本语言开发。
  • 是一套优秀的实现MySQL高可用的解决方案。
  • 数据库的自动故障切换操作能做到在0~30秒之内完成。
  • MHA能确保在故障切换过程中最大限度保证数据的一致性,以达到真正意义的高可用。

1.2. MHA组成

  • MHA Master(管理节点)
  • 管理所有数据库服务器
  • 可以单独部署在一台独立的机器上
  • 也可以部署在某台数据库服务器上
  • MHA Node(数据节点)
  • 存储数据的MySQL服务器
  • 运行在每台MySQL服务器上

1.3. MHA工作过程

  • MHA集群架构图:
    在这里插入图片描述
  • MHA 工作过程:
  • 由Manager 定时探测集群中的master节点
  • 当master故障时,Manager自动将拥有最新数据的slave提升为新的master,另一台slave主机将自动变为新master的从库,所以集群组里面的主机应该是一主多从结构。

1.4. IP规划

IP地址主从同步角色集群角色主机名
192.168.2.10客户端client10
192.168.2.20管理主机mha20
192.168.2.30主库当前主库mysql30
192.168.2.40从库备用主库mysql40
192.168.2.50从库备用主库mysql50
192.168.2.100VIP地址

2. 部署MHA集群

2.1. 准备集群环境

2.1.1. 安装依赖包

  • 安装系统自带prel包
##需要在mha20、mysql30、mysql40、mysql50安装
[root@mha20 ~]# yum  -y install perl-*
  • 下载除系统自带外的perl包rpm包搜索
wget http://rpmfind.net/linux/epel/7/x86_64/Packages/p/perl-Email-Date-Format-1.002-15.el7.noarch.rpm
wget http://rpmfind.net/linux/epel/7/x86_64/Packages/p/perl-Mail-Sender-0.8.23-1.el7.noarch.rpm
wget http://rpmfind.net/linux/epel/7/x86_64/Packages/p/perl-Mail-Sendmail-0.79-21.el7.noarch.rpm
wget http://rpmfind.net/linux/epel/7/x86_64/Packages/p/perl-MIME-Lite-3.030-1.el7.noarch.rpm
wget http://rpmfind.net/linux/epel/7/x86_64/Packages/p/perl-MIME-Types-1.38-2.el7.noarch.rpm
wget http://rpmfind.net/linux/epel/7/x86_64/Packages/p/perl-Parallel-ForkManager-1.18-2.el7.noarch.rpm
wget http://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/perl-Config-Tiny-2.14-7.el7.noarch.rpm
wget http://rpmfind.net/linux/epel/7/x86_64/Packages/p/perl-Log-Dispatch-2.41-1.el7.1.noarch.rpm[root@mha20 ~]# ls
perl-Config-Tiny-2.14-7.el7.noarch.rpm          perl-Mail-Sendmail-0.79-21.el7.noarch.rpm
perl-Email-Date-Format-1.002-15.el7.noarch.rpm  perl-MIME-Lite-3.030-1.el7.noarch.rpm
perl-Log-Dispatch-2.41-1.el7.1.noarch.rpm       perl-MIME-Types-1.38-2.el7.noarch.rpm
perl-Mail-Sender-0.8.23-1.el7.noarch.rpm        perl-Parallel-ForkManager-1.18-2.el7.noarch.rpm
##在mha20、mysql30、mysql40、mysql50安装
[root@mha20 ~]# yum -y install perl-*.rpm

2.1.2. 配置ssh密钥对认证登录

  • 配置管理主机mha20可以ssh免密登录所有数据库服务器
##在mha20上创建秘钥对
[root@mha20 ~]# ssh-keygen  ---全部回车即可
##把秘钥对中公钥拷贝给mysql30、mysql40、mysql50
[root@mha20 ~]# ssh-copy-id root@192.168.2.30
[root@mha20 ~]# ssh-copy-id root@192.168.2.40
[root@mha20 ~]# ssh-copy-id root@192.168.2.50
##验证mha20 ssh登录mysql30、mysql40、mysql50是否需要密码,不用密码才是对的,这里不展示了。
  • 配置所有数据库服务器彼此之间可以ssh免密登录
##在mysql30操作如下:
[root@mysql30 ~]# ssh-keygen
[root@mysql30 ~]# ssh-copy-id root@192.168.2.40
[root@mysql30 ~]# ssh-copy-id root@192.168.2.50
##在mysql40操作如下:
[root@mysql40 ~]# ssh-keygen
[root@mysql40 ~]# ssh-copy-id root@192.168.2.30
[root@mysql40 ~]# ssh-copy-id root@192.168.2.50
##在mysql50操作如下:
[root@mysql50 ~]# ssh-keygen
[root@mysql50 ~]# ssh-copy-id root@192.168.2.30
[root@mysql50 ~]# ssh-copy-id root@192.168.2.40
##执行完后验证mysql30、mysql40、mysql50是否可以彼此之间免密登录,这里就不展示了。

2.1.3. 配置一主多从

  • 需要关闭防火墙和selinux

2.1.3.1. 配置主库(mysql30)

##修改配置文件开启binlog日志
[root@mysql30 ~]# vim /etc/my.cnf
[mysqld]
....
log_bin=mysql30
server_id=30
##安装半同步模块
plugin-load=rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so
##启动半同步模块
rpl_semi_sync_master_enabled=1
rpl_semi_sync_slave_enabled=1
##禁止删除本机中继日志
relay_log_purge=0
##重启mysql服务
[root@mysql30 ~]# systemctl restart mysqld
##查看binlog日志文件名称和pos值
mysql> show master status;
+----------------+----------+--------------+------------------+-------------------+
| File           | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------+----------+--------------+------------------+-------------------+
| mysql30.000001 |      154 |              |                  |                   |
+----------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
##创建授权用户
mysql> grant replication slave on *.* to 'master'@'%' identified by '1234';

2.1.3.2. 配置从服务器(mysql40)

##修改配置文件
[root@mysql40 ~]# vim /etc/my.cnf
[mysqld]
....
server_id=40
log_bin=master40
plugin-load=rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_master_enabled=1
rpl_semi_sync_slave_enabled=1
relay_log_purge=0##重启服务
[root@mysql40 ~]# systemctl restart mysqld
##指定主服务器,pos的值必须是在主库创建授权用户之前,不然从库无法同步授权用户,需要手动创建授权用户。
mysql> change master to-> master_host="192.168.2.30",-> master_user="master",-> master_password="1234",-> master_log_file="mysql30.000001",-> master_log_pos=154;
##启动slave
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
##查看是否配置成功
mysql> show slave status\G;  
查看Slave_IO_Running和Slave_SQL_Running是yes那就配置成功,这里不展示了。

2.1.3.3. 配置从服务器(mysql50)

##修改配置文件
[root@mysql50 ~]# vim /etc/my.cnf
[mysqld]
....
server_id=50
log_bin=master50
plugin-load=rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_master_enabled=1
rpl_semi_sync_slave_enabled=1
relay_log_purge=0##重启服务
[root@mysql50 ~]# systemctl restart mysqld
##指定主服务器
mysql> change master to-> master_host="192.168.2.30",-> master_user="master",-> master_password="1234",-> master_log_file="mysql30.000001",-> master_log_pos=154;
##启动slave
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
##查看是否配置成功
mysql> show slave status\G;  
查看Slave_IO_Running和Slave_SQL_Running是yes那就配置成功,这里不展示了。

2.2. 配置管理节点(mha20)

2.2.1. 安装mha软件包

##下载软件包
[root@mha20 ~]# wget https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager-0.58.tar.gz
[root@mha20 ~]# wget https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58-0.el7.centos.noarch.rpm
##安装mha4mysql-node
[root@mha20 ~]# yum -y install mha4mysql-node-0.58-0.el7.centos.noarch.rpm
##源码编译安装mha4mysql-manager
[root@mha20 ~]# tar -xf mha4mysql-manager-0.58.tar.gz -C /usr/local/
[root@mha20 ~]#  cd /usr/local/mha4mysql-manager-0.58/
[root@mha20 ~]#  perl Makefile.PL  --预编译有报错很有可能是依赖包的问题。
[root@mha20 ~]# make;make install
##配置环境变量:
[root@mha20 ~]#  echo "export PATH=/usr/local/mha4mysql-manager-0.58/bin:$PATH" >/etc/profile.d/mha4mysql.sh
[root@mha20 ~]# . /etc/profile.d/mha4mysql.sh
[root@mha20 ~]# echo $PATH

2.2.2. 管理集群命令

[root@mha20 ~]# ls /usr/local/mha4mysql-manager-0.58/bin/
masterha_check_repl  masterha_check_status  masterha_manager         masterha_master_switch    masterha_stop
masterha_check_ssh   masterha_conf_host     masterha_master_monitor  masterha_secondary_check
命令作用
masterha_check_ssh检查MHA的SSH配置状态
masterha_check_repl检查MySQL复制状态
masterha_manager启动MHA
masterha_check_status检测MHA运行状态
masterha_stop停止MHA
masterha_master_monitor检测master是否宕机
masterha_master_switch控制故障转移(自动或者手动)
masterha_conf_host添加或删除配置的server信息

2.2.3. 修改主配置文件

##创建工作目录
[root@mha20 ~]# mkdir  /etc/mha
[root@mha20 ~]# cp -r /usr/local/mha4mysql-manager-0.58/samples/conf/app1.cnf /etc/mha/
## 修改配置文件
[root@mha20 mha]# vim /etc/mha/app1.cnf
修改内容如下:
[server default]          ---管理服务的默认配置
manager_workdir=/etc/mha      ---指定工作目录路径
manager_log=/etc/mha/manager.log    ---指定管理服务运行后日志文件的名称和存放路径
master_ip_failover_script=/etc/mha/master_ip_failover      ---指定故障切换脚本
ssh_user=root    ---指定ssh连接时候的用户名和端口号
ssh_port=22repl_user=master       ---指定主库授权的用户名和密码
repl_password=1234user=mysqldb				---指定监控用户和密码,三台mysql需要一样。
password=1234ping_interval=1         ---ping间隔时长
[server1]       			---指定第一台mysql服务器
hostname=192.168.2.30       ---指定第一台mysqlIP地址
port=3306                   ---端口号
candidate_master=1          ---指定该数据库服务器参与竞选主库,1代表参与。[server2]
hostname=192.168.2.40
port=3306
candidate_master=1[server3]
hostname=192.168.2.50
port=3306
candidate_master=1

2.2.4. 创建故障切换脚本

[root@mha20 mha]# cp -r /usr/local/mha4mysql-manager-0.58/samples/scripts/master_ip_failover /etc/mha/
##给脚本添加执行权限
[root@mha20 mha]# chmod +x /etc/mha/master_ip_failover
##下面是完整的脚本文件,需要修改VIP地址和网卡名称。
[root@mha20 mha]# vim  /etc/mha/master_ip_failover
#!/usr/bin/env perluse strict;
use warnings FATAL => 'all';use Getopt::Long;my ($command,          $ssh_user,        $orig_master_host, $orig_master_ip,$orig_master_port, $new_master_host, $new_master_ip,    $new_master_port
);my $vip = '192.168.2.100/24';     #指定VIP地址
my $key = '1';
my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip";   #这里需要注意的就是网卡名称,没人的主机网卡名不一样需要注意。
my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down";GetOptions('command=s'          => \$command,'ssh_user=s'         => \$ssh_user,'orig_master_host=s' => \$orig_master_host,'orig_master_ip=s'   => \$orig_master_ip,'orig_master_port=i' => \$orig_master_port,'new_master_host=s'  => \$new_master_host,'new_master_ip=s'    => \$new_master_ip,'new_master_port=i'  => \$new_master_port,
);exit &main();sub main {print "\n\nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\n\n";if ( $command eq "stop" || $command eq "stopssh" ) {my $exit_code = 1;eval {print "Disabling the VIP on old master: $orig_master_host \n";&stop_vip();$exit_code = 0;};if ($@) {warn "Got Error: $@\n";exit $exit_code;}exit $exit_code;}
elsif ( $command eq "start" ) {my $exit_code = 10;eval {print "Enabling the VIP - $vip on the new master - $new_master_host \n";&start_vip();$exit_code = 0;};if ($@) {warn $@;exit $exit_code;}exit $exit_code;}elsif ( $command eq "status" ) {print "Checking the Status of the script.. OK \n";exit 0;}else {&usage();exit 1;}
}
sub start_vip() {`ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`;
}
sub stop_vip() {return 0  unless  ($ssh_user);`ssh $ssh_user\@$orig_master_host \" $ssh_stop_vip \"`;
}sub usage {print"Usage: master_ip_failover --command=start|stop|stopssh|status --orig_master_host=host --orig_master_ip=ip --orig_master_port=port --new_master_host=host --new_master_ip=ip --new_master_port=port\n";
}

2.2.5. 在主库上创建VIP地址(mysql30)

[root@mysql30 ~]# ifconfig ens33:1 192.168.2.100
[root@mysql30 ~]# ifconfig ens33:1
ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.2.100  netmask 255.255.255.0  broadcast 192.168.2.255ether 00:0c:29:88:4f:b0  txqueuelen 1000  (Ethernet)

2.3. 配置数据库服务器(mysql30-50)

2.3.1. 在数据库服务器安装mha4mysql-node软件包

##在mysql30、mysql40、mysql50执行如下命令
[root@mysql30 ~]# wget https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58-0.el7.centos.noarch.rpm
[root@mysql30 ~]# yum -y install mha4mysql-node-0.58-0.el7.centos.noarch.rpm

2.3.2. 创建监控用户

##监控用户是在管理服务器配置文件上指定的:user=xxx,password=xxxx
##在主库上执行,从库自然同步过去。
mysql> grant all on *.* to 'mysqldb'@'%' identified by '1234';
Query OK, 0 rows affected, 1 warning (0.00 sec)

3. 验证配置

3.1. 测试ssh配置

##在mha20服务器上执行测试:
[root@mha20 ~]# masterha_check_ssh --conf=/etc/mha/app1.cnf
....
All SSH connection tests passed successfully    ---最后出现这个就说明配置正确。

3.2. 测试主从配置

[root@mha20 ~]# masterha_check_repl --conf=/etc/mha/app1.cnf
...
MySQL Replication Health is OK.    ---出现这个说明MySQL复制运行状况正常

3.3. 启动管理服务

  • 使用 masterha_manager 命令启动管理服务

—— --remove_dead_master_conf是指当主库宕机的时候,会删除宕机主库的配置,否则主库宕机后服务就会无法启动;–ignore_last_failover是指忽略 xxx.health 文件,意思是当主库宕机之后,服务会在规定的时间内连接剩下的从服务器来选举出主库。如果启动服务的时候不加这个选项,那么超过规定时间还没连接上的时候,就不会再去切换主库了,加上这个选项后,既是在规定时间内没能连接上剩下的从服务器,之后也会继续尝试连接,知道选举出主库进行切换。

##启动
[root@mha20 ~]# masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf   --ignore_last_failover
##后台启动
nohup  masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf   --ignore_last_failover  &
##查看mha运行状态:
[root@mha20 ~]# masterha_check_status --conf=/etc/mha/app1.cnf
app1 (pid:39934) is running(0:PING_OK), master:192.168.2.30
##如果想停止服务可以输入下面命令
[root@mha20 ~]# masterha_stop --conf=/etc/mha/app1.cnf

4 测试高可用

4.1. 模拟主库服务器故障

  • 模拟故障的方法:
  • 停止mysqld服务
  • 关机
  • 故障切换过程:
    当管理主机连接不上mysql主服务器时,就认为mysql主服务器宕机了,然后管理主机的服务自动停掉,然后调用故障切换脚本,删除管理主机中关于mysql主服务器的内容(/etc/mha/app1.cnf)然后脚本会在选举出来的主服务器创建VIP地址。
##在mysql30主服务关闭mysql服务
[root@mysql30 ~]# systemctl stop mysqld.service
##检查管理主机的配置文件是否删除mysql30的信息。
[root@mha20 ~]# grep "192.168.2.30" /etc/mha/app1.cnf   --执行这条命令可以看的出来,已经没有mysql30的信息了。
##在管理主机上查看日志文件master现在是哪台?
[root@mha20 ~]# grep "new master" /etc/mha/manager.log
Fri Feb 24 14:58:16 2023 - [info] Searching new master from slaves..
192.168.2.40(192.168.2.40:3306) (new master)
Fri Feb 24 14:58:16 2023 - [info] Getting new master's binlog name and position..
Enabling the VIP - 192.168.2.100/24 on the new master - 192.168.2.40
Fri Feb 24 14:58:17 2023 - [info]  Resetting slave 192.168.2.50(192.168.2.50:3306) and starting replication from the new master 192.168.2.40(192.168.2.40:3306)..
Fri Feb 24 14:58:18 2023 - [info] Resetting slave info on the new master..
Selected 192.168.2.40(192.168.2.40:3306) as a new master.
##可以看的出来mysql40被选举出来作为master
##在mysql40上查看VIP地址是否在
[root@mysql40 ~]# ifconfig ens33:1
ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.2.100  netmask 255.255.255.0  broadcast 192.168.2.255ether 00:0c:29:83:e3:d4  txqueuelen 1000  (Ethernet)
##查看mysql50的slave状态
[root@mysql50 ~]# mysql -uroot -p1234 -e "show slave status \G;"|head -13|tail -11
mysql: [Warning] Using a password on the command line interface can be insecure.Master_Host: 192.168.2.40     ---可以看的出来mysql40已经是masterl Master_User: masterMaster_Port: 3306Connect_Retry: 60Master_Log_File: master40.000001Read_Master_Log_Pos: 154Relay_Log_File: mysql50-relay-bin.000002Relay_Log_Pos: 319Relay_Master_Log_File: master40.000001Slave_IO_Running: YesSlave_SQL_Running: Yes	
##启动管理主机的mha服务
[root@mha20 ~]# nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf   --ignore_last_failover &
##查看mha状态
[root@mha20 ~]# masterha_check_status  --conf=/etc/mha/app1.cnf
app1 (pid:57758) is running(0:PING_OK), master:192.168.2.40

4.2. 修复故障的数据库服务器

4.2.1. 数据服务器的配置

  • 具体操作如下:
  1. 启动mysql服务
  2. 与主服务器数据一致
  3. 指定主服务器信息
  4. 启动slave进程
  5. 查看slave状态信息
## 启动mysql30服务
[root@mysql30 ~]# systemctl start mysqld
##指定主库服务器信息。
mysql> change master to-> master_host="192.168.2.40",-> master_user="master",-> master_password="1234",-> master_log_file="master40.000001",-> master_log_pos=154;
Query OK, 0 rows affected, 2 warnings (0.00 sec)
##注意这里指定的binlog的文件名称master40.000001的原因是因为mysql40第一次变成master所以他的文件名是从master40.000001开始的。
##然而pos值=154的原因是为了mysql30和mysql40数据一致,因为假如你查看现在的mysql40的pos值应该会有变化,因为mysql30宕机后生产环境下肯定会往里面写入数据,但是pos值是从154开始的所以直接指定154才能很快的保证数据一致。
mysql> start slave;
##这里就不显示slave的状态了。

4.2.2. 配置管理主机

##停止mha服务
[root@mha20 ~]# masterha_stop   --conf=/etc/mha/app1.cnf
##修改mha主配置文件
[root@mha20 ~]# vim /etc/mha/app1.cnf
....
##添加如下:
[server1]
candidate_master=1
hostname=192.168.2.30
port=3306
##启动mha服务
[root@mha20 ~]# nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf   --ignore_last_failover &
##查看mha状态
[root@mha20 ~]# masterha_check_status   --conf=/etc/mha/app1.cnf
app1 (pid:60567) is running(0:PING_OK), master:192.168.2.40
http://www.hrbkazy.com/news/19767.html

相关文章:

  • 网页设计作业在线网站首页谷歌优化排名怎么做
  • 月嫂服务公司网站建设方案it培训机构排名及学费
  • 网站推广网站关键词排名怎么做商丘网络推广外包
  • 中江移动网站建设小程序推广平台
  • 太原网站建设推广服务辽宁和生活app下载安装
  • dreamweaver 企业网站模板宁波网站建设公司
  • wordpress流水布局主题无锡网站优化公司
  • 北京商城网站建设报价磁力宝最佳搜索引擎入口
  • 江桥做网站做好网络推广的技巧
  • 响应式网站和自适应网站区别网站推广渠道
  • 专业网站的建设设行吗网站流量统计分析
  • 做外贸常用网站专业的seo搜索引擎优化培训
  • vi设计网站运动康复郑州网站建设推广
  • 老榕树网站建设教学网络推广服务合同范本
  • 德宏企业网站建设公司6宁波seo外包推广渠道
  • 做一婚恋网站多少钱比较开放的浏览器
  • 建设电子商务网站的目的和意义上海快速优化排名
  • 东莞公司网站搭建多少钱快速网站推广优化
  • 群晖nas可以做网站吗怎么找需要做推广的公司
  • 长春电商网站建设费用bt兔子磁力搜索引擎最新版
  • 深圳市网站建设公司设计公司上海职业技能培训机构一览表
  • 公司建设网站费用怎么记账百度下载链接
  • 武汉城市建设网站女孩短期技能培训班
  • 泉州制作网页的网站汕头网站建设方案维护
  • 青岛做视频的网站设计seo优化运营专员
  • 杭州网站建设 网络服务网站优化公司大家好
  • 唐山网站提升排名聊城网站推广公司
  • 做网站的相关规定手机百度免费下载
  • 自己做企业网站用哪个软件seo案例
  • 凯里网络公司建设网站爆款采集推广引流软件