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_HOMEexport JAVA_HOME=/opt/jdk1.8#PATHexport PATH=$PATH:$JAVA_HOME/bin
- 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=0enable=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.rpmrpm -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 user3. 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=1log_binbinlog-do-db=baizhi(要同步的数据库)binlog-ignore-db=mysql(忽略同步的数据库)
1.2 重启mysql数据库
systemctl restart mysqld
1.3 登录mysql数据库
mysql -uroot -p123456
1.4 show master status ;
解释:file—> 日志文件
position(位置) —> 日志文件目前的位置
主从复制的原理:通过日志文件以及日志的位置,告诉从机应该从哪文件的哪个位置开始备份,
只要操作主机的数据库,从机就应该从120这个位置以后的操作进行备份(同步)操作
2、修改从节点
说明:如果是克隆的虚拟机需要先删除从机上的 /var/lib/mysql/auto.cnf文件
2.1 修改 /etc/my.cnf
server-id=133()
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_HOMEexport JAVA_HOME=/opt/jdk1.8#MYCAT_HOME
export MYCAT_HOME=/opt/mycat
#PATHexport 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
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
nginx+mycat实现负载均衡、数据库的主从复制、读写分离相关推荐
- Nginx 之五: Nginx服务器的负载均衡、缓存与动静分离功能
一.负载均衡: 通过反向代理客户端的请求到一个服务器群组,通过某种算法,将客户端的请求按照自定义的有规律的一种调度调度给后端服务器. Nginx的负载均衡使用upstream定义服务器组,后面跟着组名 ...
- (转)nginx+iis实现负载均衡
nginx+iis实现负载均衡 最近在研究分布式系统架构方面的知识,包括负载均衡,数据库读写分离,分布式缓存redis等.本篇先从负载均衡服务架构入手,关于负载均衡百度百科的定义如下:负载均衡,英文名 ...
- nginx+tomcat+memcached负载均衡
2019独角兽企业重金招聘Python工程师标准>>> nginx+tomcat+memcached负载均衡 负载均衡: 负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服 ...
- Nginx + IIS实现负载均衡 Session多站点共享
日子过得太索然无味了,研究了一下,所谓的负载均衡(主要是windows服务器IIS下的).先看看分析图: 环境: linux服务器: centos 6.3 windows服务器: windows se ...
- nginx+tomcat+redis负载均衡及session共享
概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...
- windows使用nginx+memcached实现负载均衡和session或者缓存共享
windows使用nginx+memcached实现负载均衡和session或者缓存共享 两台server server1:115.29.186.215 windows2008 64位操作系统 ser ...
- Nginx + Tomcat 实现负载均衡
文章目录 引言 一.案例架构 二.安装部署 1. nginx 服务器安装部署 1.1 脚本一键安装部署 1.2 配置修改 2. tomcat01 服务器安装部署 2.1 安装 JDK 环境 2.2 安 ...
- Nginx学习之负载均衡fair模块
2019独角兽企业重金招聘Python工程师标准>>> Nginx学习之负载均衡fair模块 2017-04-10 20:27 写在开始 前面对Nginx的三种负载均衡实现做了一个简 ...
- 基于nginx的tomcat负载均衡和集群(超简单)
今天看到"基于apache的tomcat负载均衡和集群配置 "这篇文章成为javaEye热点. 略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法. 要集群t ...
最新文章
- [转]JavaScript代码收集
- ninject 的 实现 的 理解
- Linux获得命令帮助
- Rails 3.1 CoffeeScript SASS初体验
- 前端:CSS/12/display属性,overflow属性,cursor光标类型,CSS定位,综合案例:今日闪价
- 嵌入式Linux系统编程学习之二十五信号量
- qdebug 调试 输出乱码_Python里三个最高逼格的调试神器
- 当前局域网禁止BT下载的常用工具及其弊端。
- iOS开发中那些高效常用的宏
- VC编程获取和修改环境变量,不重启系统即时生效
- 移动网优大神VoLTE学习笔记(四):主叫信令流程
- IDEA 打包jar
- matlab面板数据怎么求增长率的公式,环比增长率怎么算公式表格(教你如何计算同比增长率)...
- 用C语言编程验证 “ 哥德巴赫猜想 ”
- 【解决】电脑开给手机开热点问题
- Android应用自启动保活手段与安全现状分析
- python编程*三角形图形创意图片_使用python的pil制作微信九宫格图片
- hivesql失败告警发送到企业微信
- Cannot serialize; nested exception is org.springframework.core.serializer
- Java入门 18 3\25