当前位置: 首页 > >

集群的负载均衡和读写分离

发布时间:

集群的负载均衡和读写分离
一 集群的理念
二 Lingx系统的操作命令
三 集群软件安装及其它
一 集群的理念

大家都知道现在的项目是在服务器的部署的,而服务器上装的系统又是Linux系统,是一个开源的免费的操作系统(优势:相对稳定。缺点:相对操作不方便)。


负载均衡:

而一个项目在部署到服务器上时,因为防止大批量并发访问,给服务器带来的压力很容易就会使服务器宕机。所以需要布置多个服务器,服务器之间的项目都是一个项目,这样就给服务器分摊了很大的压力(一般最少三个,再少就没意义了)。
那么服务器的压力搞定了,怎样才能让访问能够*均分配到各个服务器中,或者怎样根据服务器的能力来确定接受访问的多少呢?


这个时候就诞生了一个代理服务器Nginx,Nginx代替了Tomcat(测试用)对外提供服务。
Nginx分为两种代理模式:
一种是正向代理(代理的是客户端,客户端能够知道访问的真是服务器)。
一种是反向代理(代理的是服务器,客户端不知道访问的真是服务器)。
我们用的是其反向代理服务器(其实就是一个东西,能做两件事,所以有两个名字)。


Nginx可以保证N多台代理的Tomcat接收到均衡的请求(如果需要定制访问比例 如三台服务器的访问比例是1:4:2,可以自行设置,这里不说那一块,有需要的可以回复我)。
说以Nginx也叫负载均衡器(也可以叫上边提到了代理服务器,看各位大爷的喜好了)。
一般Nginx最少两个,有一个备用,防止运行时出现问题。


上边说的客户访问请求到Nginx,再由Nginx分配给各个Tomcat服务器的的这个过程就叫做负载均衡(哎呀!终于说完了,纯手打也不知道大爷们能不能够看明白)。


读写分离:

顾名思义就是对数据库操作的一系列解耦合。
(对了之前听了一个笑话,凡是别人问你为什么用这个框架或者为什么要用这个技术的时候,如果你不知道就可以这样回答: 可以解耦合、提高用户的体验度、提高开发效率、提高程序的安全性。感觉说的很对的大白话。。。。。)


言归正传,怎样做读写分离呢?
跟上边的负载均衡一样,配置三台服务器来对数据库进行操作(感觉也是最少三台吧),一台是执行写操作,两台执行读操作(根据需要来配置,一般都是读操作远远大于写操作)。一个为主机,两个是从机,所以叫主从复制。
主从架构是主机负责管理,从机负责执行任务。
主从复制的原理是一日志的方式做增量备份(吧主机接收道德写操作的sql语句形成日志文件,把这个文件传输给从机中。增量备份的意思是:把新增的传输过去)。


主从复制的环境是:
    都必须链接数据库。需要通过Windows客户端工具建立链接。在三台数据库中都需要创建出来同名的数据库。保证三台机器中的数据库的状态完全一致。

主从复制的好处有:最主要的就是解耦合(哈哈,有没有一种看笑话的意思。。。。);
开个玩笑。


主从复制的好处是:真真最主要的当然是减轻了对数据库的压力

(用了三个数据库能不减轻么,哪些大公司更多,听说百度17年就有5、6千台服务器,你想想里边有多少台主、从机,更别说阿里巴巴了,当然现在咱说的是最基础最简单的,跟人家的没比)。


那么又来了一个问题,从Tomcat中过来的读写怎样才能分辨和发送呢?
这个时候就需要一个中间件了。


MyCat:

MyCat是一个开源的java项目,通过它来管理数据库,实现数据库集群环境。其实从程序的角度来说MyCat就是一个数据库,也叫作逻辑库(说中间件也行)。
同样的MyCat和Nginx一样起到过滤、逻辑分类等作用,所以MyCat最少也要两个,另外一个是备机,同样防止运行时出现问题。


运行环境:jdk+MyCat

这样整个的集群基本就玩了。
整体再理一下:
整个集群分为两部分:负载均衡集群和读写分离集群。
负载均衡集群包括:2台Nginx(负载均衡器)+3台服务器(这3台里边有个访问数据比例配置的操作,不配置会挨个访问,叫轮询)。
读写分离集群包括:2台MyCat(中间件)+3台安装数据库的服务器(这3台里边有一个主从复制的技术)。


二 Lingx系统的操作命令

dhclient: 分配ip地址。
ip addr: 显示、查询分配的ip(CentOS 7)。
Ifconfig: 显示、查询分配的ip(CentOS 6)。
ping 192.168.17.128:查询当前Linux是否通网,只要不是100%丢失都属于通网。
命令 -help:加载命令对应的帮助信息。
clear: 清屏。
reboot: *簟
shutdown: 关机。
pwd: 显示当前所有目录(print work directory)。
cd: 切换目录(changedirectory) 如:cd /tmp : 就是进入根目录下的tmp文件夹。
ls: 显示当前目录下的文件。
ls -l: 以列表的方式显示。
ls -a: 所有(包含隐藏文件,以点开头的文件) 。
mkdir: 创建一个目录/文件夹
touch: 创建一个文件
touch filename:创建一个文件
cp/mv/rm --》copy/move/remove:复制/剪切/删除
rm -fr a : 递归删除a。
more/less/head/tail
查看文件内容
more a.txt==>用来查看文件内容;如果想退出,按字母键Q
head:显示前10行内容
tail:显示后10行内容
-f:显示滚动信息;一般应用在显示日志信息
grep:可以到文件中模糊搜索



/>>
命令>/>>文件===>把命令执行之后的结果写入到文件中
覆盖写



追加写
如:ls -l > /tmp/a.txt 命令执行之后的结果,写入到文件中。 命令2一般使用grep命令
vi文件名:打开文件。
i: 打开后进入编写模式。
Esc: 编写后退出编写模式。
:wq : 保存并退出。
:q!: 不保存退出。
nyy: 复制n行。
P/p : 粘贴(大小写区分向上粘贴还是向下粘贴)。
ndd: 删除n行。




tar: 解压文件 如:tar -zxvf a.tar.gz==>解压a.tar.gz文件。
rpm: 安装文件rpm -ivh a.rpm==》安装a.rpm软件。
system stop firewalld:关闭防火请 CentOS7。
iptables stop: 关闭防火墙CentOS6。
yum install 软件名: yum安装。
yum install -y gcc: 安装gcc语言环境(注意这个是安装c语言环境的,不需要的不用执行)。
systemctl restart nginx: 启动nginx。
mysql -uroot -p: 登陆mysql。
选择文件时只打出前几个单词,按tab键可自动补全。


修改user表中的password字段,完成root用户的密码的设置
update user set password=password(’123456’) where user=’root’;
允许远程访问;修改user表中的字段host,设置为%
update user set host=’%’ where host=’localhost’;
让修改生效才可以使用:reboot;flush privileges;
flush privileges; : 让配置文件生效(注意这个是mysql下执行的命令,后边要加;这个)。
退出mysql的命令模式:exit/quit


指定需要复制的数据库,不需要复制的数据库
binlog-do-db=baizhi
binlog-ignore-db=mysql
重新启动mysql服务
systemctl restart mysqld
停止掉slave
stop slave;
启用slave
start slave;
查看从机状态
show slave status G;
mycat start: 启动mycat服务。


(好了 ,就这些吧,应该够用了)。


三 集群软件安装及其它

需要安装过程的可以留言。



友情链接: