nginx+mycat实现负载均衡、数据库的主从复制、读写分离

材料:XManager;七台CentOS(Linux)系统虚拟机(一台安装nginx,两台安装Tomcat+JDK,一台安装mycat,三台安装mysql数据库:一台master主节点,两台slave从节点)

一、安装JDK

1、将JDK安装包使用xftp上传到虚拟机/opt文件夹下解压

1.1上传安装包
在这里插入图片描述
1.2查看安装包
在这里插入图片描述
1.3解压
在这里插入图片描述

2、配置JDK的配置环境

2.1进入/etc/profile进行编辑


	vi /etc/profile

2.2来到profile文件末尾,进入编辑模式,配置环境变量


	#JAVA_HOME
	export JAVA_HOME=/opt/jdk1.8
	#PATH
	export PATH=$PATH:$JAVA_HOME/bin
  1. List item

2.3保存退出

3、使配置生效


	source /etc/profile

4、测试是否安装成功

使用 java 、java --version命令进行测试

二、安装Tomcat

1、上传解压打开tomcat

1.1上传、解压步骤与安装JDK相同
1.2开启tomcat:进入tomcat目录下的bin目录执行startup.sh文件
在这里插入图片描述

./startup.sh

三、nginx的安装

1、centos系统中默认的yum仓库中没有nginx的安装包,所以要想安装nginx需要单独指定他的仓库地址

1.1 将nginx.repo上传到linux服务器下的/etc/yum.repos.d/下
在这里插入图片描述
nginx.repo文件说明:
name=# 一个描述,随意;
baseurl=# 设置资源仓库的地址;
gpkcheck=0 表示对从这个源下载的rpm包不进行校验;
enable=1表示启用这个源
```bash

	[nginx]
	name=nginx repo 
	baseurl=http://nginx.org/packages/centos/7/x86_64/
	gpgcheck=0
	enable=1		
```

2、安装nginx


	yum install nginx

3、启动nginx


	systemctl start nginx

3.1查看nginx状态


	systemctl status nginx

显示这样的状态就是开启成功
在这里插入图片描述

四、使用nginx实现负载均衡

1、这里使用三台虚拟机,一台安装nginx,两台安装tomcat+jdk

1.1 使用dhclient命令为三台机器分配ip地址,以备后续使用
我这里三台计算机的ip为
192.168.10.131(安装nginx)
192.168.10.129
192.168.10.130

1.2 使用systemctl stop firewalld 关闭防火墙

2、配置负载均衡

2.1 打开/etc/nginx/conf.d/default.com文件


	#新增
	upstream aa{
	   server 192.168.10.129:8080;
	   server 192.168.10.130:8080;
	}
	server{
	   #在location/{}中添加 (注:下边的aa与upstream aa中的aa相统一)
	   proxy_pass http://aa
	}

在这里插入图片描述

3、重启nginx服务


	systemctl restart nginx

4、关闭linux安全


	vi /etc/selinux/config

在这里插入图片描述

注意:linux系统关闭安全组之后,必须重启服务器 使用reboot命令

5、测试

输入http:192.168.10.131:80 访问nginx 实际访问的是tomcat
在这里插入图片描述

6、nginx的负载均衡策略

6.1 轮询(默认)
6.2 权重
weight=数值 ,数字越大,权重越高,权重越高访问次数越高

   upstream aa{
      server  ip:8080 weight=2;
      server  ip:8080 weight=1;
}

6.3 ip黏着
特点:根据用户的ip固定的访问某台tomcat

upstream aa{
	#新增
      ip_hash;  
      server  ip:8080;
      server  ip:8080 ;
}

五、安装mysql

1、安装方式1

1.1将mysql的rpm安装包上传到/opt下
1.2安装vim

    yum install vim 

1.3卸载mariabd数据库

 rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

解释:centos7自带的mariabd数据库和我们要安装的mysql有冲突
1.4 进入/opt/mysql_rpm文件夹,使用rpm命令安装

   rpm -ivh perl-*
   rpm -ivh net-tools-2.0-0.22.20131004git.el7.x86_64.rpm
   rpm -ivh mysql-community-*

1.5 启动mysql数据库

systemctl start mysqld

1.6 登录mysql数据库

 mysql -uroot -p  默认没有密码

1.7 修改密码,允许远程访问

  1. use mysql 
  2. select host,user,password from user
  3. update user set password=password('123456') where user='root';
  4. update user set host='%' where host='127.0.0.1';

1.8 执行 flush privileges 否则需要重启mysql数据库才能生效

2、安装方式2

参照本人另一篇博客【使用wget安装mysql】

六、mysql主从分离

准备工作:准备三台安装了mysql数据库的服务器
确保服务器的防火墙都关闭了

1、操作主机

1.1 修改/etc/my.cnf文件

    server-id=1
    log_bin
    binlog-do-db=baizhi(要同步的数据库)
    binlog-ignore-db=mysql(忽略同步的数据库)

图片2

1.2 重启mysql数据库

   systemctl restart mysqld

1.3 登录mysql数据库

   mysql -uroot -p123456

1.4 show master status ;
图片主从分离1

解释:file—> 日志文件
position(位置) —> 日志文件目前的位置

主从复制的原理:通过日志文件以及日志的位置,告诉从机应该从哪文件的哪个位置开始备份,
只要操作主机的数据库,从机就应该从120这个位置以后的操作进行备份(同步)操作

2、修改从节点

说明:如果是克隆的虚拟机需要先删除从机上的 /var/lib/mysql/auto.cnf文件
2.1 修改 /etc/my.cnf
server-id=133()
图3
2.2 重启从机上mysql数据库

systemctl restart mysqld

2.3 登录从机mysql数据库

2.4 设置从节点的状态

  stop slave;

2.4.1告诉当前从机应该去哪找主节点,然登录主节点获取日志文件,从哪个位置开始备份

change master to  master_host='主机的ip',master_user='主机用户名',master_password='主机的密码',master_log_file=’xx’,master_log_pos=xx;

start salve;

2.5查看从节点的状态 (两个都为yes即设置成功)

show slave status\G

在这里插入图片描述

七、使用mycat实现读写分离

准备工作:创建一台虚拟机安装mycat(安装有JDK)
确保关闭防火墙

1、mycat安装

1.1 上传mycat安装包 /opt下
1.2 解压安装
1.3 配置环境变量

vi /etc/profile
#JAVA_HOME
	
export JAVA_HOME=/opt/jdk1.8

#MYCAT_HOME
export MYCAT_HOME=/opt/mycat	
#PATH
	
export PATH=$PATH:$JAVA_HOME/bin:$MYCAT_HOME/bin

1.4 source profile

1.5 修改/confg目录下的server.xml和schema.xml配置文件

1.5.1 修改server.xml
图一
1.5.2 修改schema.xml
图二
1.6 启动mycat
mycat
读写4
1.7 连接测试
图三

八、通过nginx、mycat实现负载均衡以及对数据库的读写分离在这里插入图片描述

注意项目中数据库连接的url需要修改为安装mycat的机器的ip地址,数据库名为schema.xml配置文件中的数据库名
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.10.134:8066/TESTDB?useUnicode=true&characterEncoding=utf8
jdbc.user=root
jdbc.password=123456
  • 9
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值