亿级流量架构|day07-集群部署及数据库高可用实现

集群部署及数据库高可用实现

  • 1 Linux集群部署
    • 1.1 连接数据库
      • 1.1.1 修改JDBC ip地址
      • 1.1.2 修改db.property
      • 1.1.3 Tomcat部署示意图
    • 1.2 部署单台Tomcat
      • 1.2.1 上传tomcat安装包
      • 1.2.2 修改配置文件
      • 1.2.3 启动tomcat
      • 1.2.4 关闭防火墙
      • 1.2.5 部署war包
      • 1.2.6 开放mysql权限
      • 1.2.7 单台tomcat测试
      • 1.2.8 复制多台tomcat
      • 1.2.9 Nginx实现Linux集群访问
  • 2 数据库高可用
    • 2.1 数据库备份
      • 2.1.1 冷备份
      • 2.1.2 热备份
      • 2.1.3 克隆2台虚拟机
      • 2.1.4 安装mysql数据库
      • 2.1.5 启动mysql服务项
      • 2.1.6 导入数据库
      • 2.1.7 关于数据库报错解决方案
    • 2.2 实现数据库主从搭建
      • 2.2.1 开启主库二进制日志文件
      • 2.2.2 配置从库
      • 2.2.3 实现数据库主从挂载
      • 2.2.4 状态检测
    • 2.3 实现数据库读写分离
      • 2.3.2 Ameba(变形虫)
    • 2.4 Amoeba搭建步骤
      • 2.4.1 配置JDK环境
      • 2.4.2 安装Amoeba
      • 2.4.3 修改dbServer.xml
      • 2.4.4 修改Amoeba.xml
      • 2.4.5 修改JVM内存
      • 2.4.6 启动Amoeba

1 Linux集群部署

1.1 连接数据库

1.1.1 修改JDBC ip地址

亿级流量架构|day07-集群部署及数据库高可用实现_第1张图片

1.1.2 修改db.property

亿级流量架构|day07-集群部署及数据库高可用实现_第2张图片

1.1.3 Tomcat部署示意图

亿级流量架构|day07-集群部署及数据库高可用实现_第3张图片

1.2 部署单台Tomcat

1.2.1 上传tomcat安装包

亿级流量架构|day07-集群部署及数据库高可用实现_第4张图片

1.解压安装文件

tar -xvf apache-tomcat-7.0.55.tar.gz

2.修改tomcat文件名称

mv apache-tomcat-7.0.55 tomcat-8091

3.移除安装包

rm apache-tomcat-7.0.55.tar.gz

最终tomcats目录结构如下:
亿级流量架构|day07-集群部署及数据库高可用实现_第5张图片

1.2.2 修改配置文件

1.报错解决方案
亿级流量架构|day07-集群部署及数据库高可用实现_第6张图片

2.修改端口
亿级流量架构|day07-集群部署及数据库高可用实现_第7张图片

1.2.3 启动tomcat

使用命令

sh startup.sh

或者命令

./startup.sh

启动tomcat

亿级流量架构|day07-集群部署及数据库高可用实现_第8张图片

1.2.4 关闭防火墙

[root@localhost bin]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter  [  OK  ]
iptables: Flushing firewall rules:                 [  OK  ]
iptables: Unloading modules:                       [  OK  ]

1.2.5 部署war包

将webapps中的ROOT文件夹先删除,之后部署war包
亿级流量架构|day07-集群部署及数据库高可用实现_第9张图片

启动tomcat

./startup.sh

切换到conf目录,然后检查日志文件

cat catalina.out

亿级流量架构|day07-集群部署及数据库高可用实现_第10张图片

1.2.6 开放mysql权限

要求:mysql权限命令的执行,需要在mysql客户端中运行。
语法:

grant [权限] on [数据库名].[表名] to ['用户名']@['web服务器的ip地址'] identified by ['密码'];
这里我们使用
grant all on *.* to 'root'@'%' identified by 'root';

或者指定IP地址

grant all on *.* to 'root'@'192.168.1.103' identified by 'root';

1.2.7 单台tomcat测试

亿级流量架构|day07-集群部署及数据库高可用实现_第11张图片

1.2.8 复制多台tomcat

cp -r tomcat-8091 tomcat-8092
cp -r tomcat-8091 tomcat-8093

亿级流量架构|day07-集群部署及数据库高可用实现_第12张图片

说明:分别修改8005/8080/8009端口启动多台tomcat,之后启动测试。

1.2.9 Nginx实现Linux集群访问

#Linux中集群部署
upstream jtLinux {
	server 192.168.126.161:8091;
	server 192.168.126.161:8092;
	server 192.168.126.161:8093;
}

#后台管理系统
server {
	listen		80;
	server_name  manage.jt.com;

	location / {
		proxy_pass http://jtLinux;
		#proxy_connect_timeout       3;  
		#proxy_read_timeout          3;  
		#proxy_send_timeout          3; 
	}
}

2 数据库高可用

2.1 数据库备份

2.1.1 冷备份

定期进行数据库导出。工具sqlYog

缺点:
-不能保证数据的完整性。
-如果数据库中文件较大,则导出的.sql文件体积很大

补充: 数据库冷备份是恢复数据的最后有效手段。

2.1.2 热备份

亿级流量架构|day07-集群部署及数据库高可用实现_第13张图片

主库:主要负责写入二进制日志文件
从库:主要负责监听主库中数据的修改,并同步到从库中。

调用过程:

  1. 当主库中数据发生变化时,会将更新的操作写入到二进制日志文件中。
  2. 从库通过IO线程实时监听主库中的二进制日志文件,当文件发生变化时,读取变化的日志内容写入中继日志中。
  3. 从库通过sql线程读取中继日志中的消息,最终将数据同步到从库中。

2.1.3 克隆2台虚拟机

克隆2台全新的数据库 mysql-master/mysql-slave,之后将IP设置为固定IP。

2.1.4 安装mysql数据库

1.上传mysql安装文件
在/usr/local/src/中新建mysql文件夹,之后上传数据库安装文件。
亿级流量架构|day07-集群部署及数据库高可用实现_第14张图片

2.解压文件
执行解压命令

tar -xvf Percona-Server-5.6.24-72.2-r8d0f85b-el6-x86_64-bundle.tar 

解压后如下

[root@localhost mysql]# tar -xvf Percona-Server-5.6.24-72.2-r8d0f85b-el6-x86_64-bundle.tar 
Percona-Server-56-debuginfo-5.6.24-rel72.2.el6.x86_64.rpm
Percona-Server-client-56-5.6.24-rel72.2.el6.x86_64.rpm
Percona-Server-devel-56-5.6.24-rel72.2.el6.x86_64.rpm
Percona-Server-server-56-5.6.24-rel72.2.el6.x86_64.rpm
Percona-Server-shared-56-5.6.24-rel72.2.el6.x86_64.rpm
Percona-Server-test-56-5.6.24-rel72.2.el6.x86_64.rpm
Percona-Server-tokudb-56-5.6.24-rel72.2.el6.x86_64.rpm

3.安装mysql数据库

安装顺序:1. 56-debug-info 2. shared 3. client 4. server

安装命令

rpm -ivh 安装文件的名称

安装Debug-info

rpm -ivh Percona-Server-56-debuginfo-5.6.24-rel72.2.el6.x86_64.rpm

安装shared

rpm -ivh Percona-Server-shared-56-5.6.24-rel72.2.el6.x86_64.rpm

安装client客户端

rpm -ivh Percona-Server-client-56-5.6.24-rel72.2.el6.x86_64.rpm

安装服务端

rpm -ivh Percona-Server-server-56-5.6.24-rel72.2.el6.x86_64.rpm

2.1.5 启动mysql服务项

启动命令: service mysql start
重启命令: service mysql restart
关闭命令: service mysql stop
在这里插入图片描述

2.1.6 导入数据库

1.关闭防火墙
亿级流量架构|day07-集群部署及数据库高可用实现_第15张图片

2.将数据库文件上传到mysql文件夹中
亿级流量架构|day07-集群部署及数据库高可用实现_第16张图片

3.设定用户名和密码
在这里插入图片描述

4.使用新密码登录
在这里插入图片描述

5.导入京淘数据库
命令:
source 绝对路径 /usr/local/src/mysql/jtdb.sql;

Source 相对路径 jtdb.sql;
亿级流量架构|day07-集群部署及数据库高可用实现_第17张图片

6.测试检查数据库是否正确

show tables;

亿级流量架构|day07-集群部署及数据库高可用实现_第18张图片

7.开启mysql对外权限

grant all on *.* to 'root'@'%' identified by 'root';

8.连接数据库
亿级流量架构|day07-集群部署及数据库高可用实现_第19张图片

2.1.7 关于数据库报错解决方案

1.查询进程号PID,然后kill
亿级流量架构|day07-集群部署及数据库高可用实现_第20张图片

2.2 实现数据库主从搭建

2.2.1 开启主库二进制日志文件

1.编辑mysql系统配置文件

vim /etc/my.cnf

亿级流量架构|day07-集群部署及数据库高可用实现_第21张图片

2.重启mysql数据库服务器
亿级流量架构|day07-集群部署及数据库高可用实现_第22张图片

注意检查二进制文件是否存在
亿级流量架构|day07-集群部署及数据库高可用实现_第23张图片

2.2.2 配置从库

1.修改从库二进制文件

vim /etc/my.cnf

亿级流量架构|day07-集群部署及数据库高可用实现_第24张图片

2.重启mysql从库
亿级流量架构|day07-集群部署及数据库高可用实现_第25张图片

2.2.3 实现数据库主从挂载

1.检查主库状态

Show master status;

亿级流量架构|day07-集群部署及数据库高可用实现_第26张图片

2.实现主从挂载

/*实现主从挂载 主库IP/端口/用户名/密码/二进制日志文件/位置*/
CHANGE MASTER TO MASTER_HOST="192.168.126.162",
MASTER_PORT=3306,
MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=120

/*启动主从服务*/
START SLAVE

/*检查主从状态*/
SHOW SLAVE STATUS;

/*如果挂载有误,先关闭主从服务 之后重新挂载主从*/
STOP SLAVE

2.2.4 状态检测

执行命令

SHOW SLAVE STATUS;

如果出现两个yes则表示挂在成功
亿级流量架构|day07-集群部署及数据库高可用实现_第27张图片
之后状态测试
修改主库数据,检查数据是否同步。

2.3 实现数据库读写分离

亿级流量架构|day07-集群部署及数据库高可用实现_第28张图片

用户的写库操作执行主库,用户的读操作指向从库。

2.3.2 Ameba(变形虫)

Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。
它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。
与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单)。

2.4 Amoeba搭建步骤

2.4.1 配置JDK环境

1.上传JDK
2.解压JDK
亿级流量架构|day07-集群部署及数据库高可用实现_第29张图片

3.配置环境变量 /etc/profile
亿级流量架构|day07-集群部署及数据库高可用实现_第30张图片

4.刷新环境配置

Source /etc/profile

然后查询jdk版本信息

java -version

亿级流量架构|day07-集群部署及数据库高可用实现_第31张图片

2.4.2 安装Amoeba

1.FZ工具使用
亿级流量架构|day07-集群部署及数据库高可用实现_第32张图片

2.下载文件
亿级流量架构|day07-集群部署及数据库高可用实现_第33张图片

3.解压文件
亿级流量架构|day07-集群部署及数据库高可用实现_第34张图片

2.4.3 修改dbServer.xml

1.配置amoeba连接数据库
亿级流量架构|day07-集群部署及数据库高可用实现_第35张图片

2.配置数据库链接
亿级流量架构|day07-集群部署及数据库高可用实现_第36张图片

3.配置连接池,定义负载均衡
亿级流量架构|day07-集群部署及数据库高可用实现_第37张图片

2.4.4 修改Amoeba.xml

1.配置IP
亿级流量架构|day07-集群部署及数据库高可用实现_第38张图片

2.定义用户名和密码
亿级流量架构|day07-集群部署及数据库高可用实现_第39张图片

3.配置读写分离
亿级流量架构|day07-集群部署及数据库高可用实现_第40张图片

2.4.5 修改JVM内存

-Xms256m  初始化内存大小256m
-Xmx1024m 最大内存1g
-Xss196k  每次线程大小

亿级流量架构|day07-集群部署及数据库高可用实现_第41张图片

2.4.6 启动Amoeba

关闭防火墙
亿级流量架构|day07-集群部署及数据库高可用实现_第42张图片

命令:

-启动命令 ./launcher
-关闭命令 ./shutdown

亿级流量架构|day07-集群部署及数据库高可用实现_第43张图片

你可能感兴趣的:(Java笔记)