linux 下搭建haproxy负载均衡+tomcat +mysql(主从复制)+apache文件服务器+nfs共享目录服务

服务器关系

192.168.1.2 部署haproxy ,tomcat,apache,nfs,jdk

192.168.1.3 部署tomcat,nfs,mysql主,jdk

192.168.1.4 部署 nfs,mysql从

首先安装jdk,tomcat,不在写怎么安装了,请自行百度。

------------------------------------------mysql主从搭建开始------------------------

接着在 192.168.1.3及192.168.1.4安装mysql 同样的版本。本次采用mysql-8.0.20

将下载好的mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz 安装包上传到192.168.1.3及192.168.1.4下的/usr/local/下

解压执行: tar Jxvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

重命名:mv mysql-8.0.20-linux-glibc2.12-x86_64 /usr/local/mysql

添加用户组设置权限

进入目录 cd /usr/local/mysql
创建文件夹 mkdir tmp
# 设置权限
chmod -R 777 tmp
# 增加组和用户
groupadd mysql
useradd -r -g mysql mysql
# 设置权限
chown -R mysql:mysql /usr/local/mysql
chown -R root:root /usr/local/mysql
初始化, 得到初始密码,编译好了后最后有一行密码,先记录下来记录密码
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

编辑配置文件

vi /etc/my.cnf

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
#default-character-set=utf8
character-set-server=utf8
socket=/usr/local/mysql/tmp/mysql.sock
log-bin=binlog ###开启binlog  从库请注释本行
#binlog-do-db=xxxx ###设置同步的数据库 从库请注释本行,主库打开

 #replicate-do-db=XXX###设置同步的数据库 从库请打开行,主库请注释本行
server-id=1 ##serverid唯一 从库设置为2
[client]
port=3306
default-character-set=utf8
socket=/usr/local/mysql/tmp/mysql.sock

修改mysql密码

cd /usr/local/mysql/bin

./mysql -u root -p 回车后输入刚才安装的时候生成的密码

登录后执行:use msyql;

执行:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';  修改密码
FLUSH PRIVILEGES; 刷新权限

在主库上新建一个用户让从库使用该用户进行复制数据

create user 'app2'@'192.168.1.4.%' identified by 'root';
grant replication slave on *.* to 'app2'@'192.168.1.4.%';
grant all privileges on *.* to 'app2'@'192.168.1.4' ;

重启mysql(service mysql stop,service mysql start)主后执行show master status:

记住这两个值,在启动从数据库的时候需要使用

从数据库启动 cd /usr/local/mysql/

./bin/mysqld_safe --defaults-file=/etc/my.cnf --skip-slave-start
然后访问从mysql
执行(注意先在主服务器上执行获取 show master status 获取MASTER_LOG_FILE,MASTER_LOG_POS)
CHANGE MASTER TO MASTER_HOST='192.168.1.3',MASTER_PORT=3306,MASTER_USER='app2',MASTER_PASSWORD='root' ,MASTER_LOG_FILE='修改为图中的binlog.000009',MASTER_LOG_POS=Position;
在执行start slave;

参考地址:centos8下使用mysql安装包安装mysql8.02 - 王牌男人 - 博客园

MySQL主从搭建 - honeylemon - 博客园

------------------------------------------mysql主从搭建完成------------------------

------------------------------------------haproxy 搭建开始------------------------

haproxy 搭建(默认tomcat已经完成)

下载地址https://src.fedoraproject.org/repo/pkgs/haproxy/haproxy-2.4.8.tar.gz/

将下载的文件解压到/usr/local/haproxy/

make TARGET=linux418 PREFIX=/usr/local/haproxy ##TARGET参数使用uname -r
make install PREFIX=/usr/local/haproxy

 在/usr/local/haproxy下尽力logs,conf 如图下目录

编辑haproxy配置文件,该配置文件根据url负载到3个后端服务,路径中带有 ip/apache的则交给s3(apache服务处理)服务处理,其他的路径交给 s1,s2的tomcat处理

[root@ecs-278566 haproxy]# more conf/haproxy.cfg
global
    log 127.0.0.1 local0
    maxconn 40960
    chroot /usr/local/haproxy
    uid 99
    gid 99
    daemon
    nbproc 1
    pidfile /usr/local/haproxy/logs/haproxy.pid  ###pid文件位置

defaults
    log global
    mode http
    option httplog
    option dontlognull
    retries 3
    option redispatch
    maxconn 20480
    timeout connect 5s
    timeout client 120s
    timeout server 120s
    
listen web
    bind 0.0.0.0:8099
    mode http
    balance roundrobin
    stats uri /haproxy-stats
    stats refresh 10s
    stats realm Haproxy\ statistics
    stats auth admin1:admin1234
    option httpchk HEAD /index.html


frontend http #前端配置,接收请求的端口组,http名称可自定义
mode http
bind 0.0.0.0:80 #监听端口,发起http请求到80端口,会被转发到设置的后端ip及端口
 acl apache_port  path_beg -i /项目名称/apache   # 定义一个ACL,名apache_port,模糊匹配路径/apache 访问图
片  
  use_backend apache_port_http_nodes if apache_port
default_backend http_back #其他路径转发到后端tomcat,后端名http_back可以自定义
 
backend apache_port_http_nodes
server s3 127.0.0.1:8088 weight 1 maxconn 2000 check inter 3s rise 3 fall 3
backend http_back #后端tomcat配置,后端名需要与前端配置的保持一致
mode http
balance source
server s1 127.0.0.1:8080 weight 1 maxconn 1000 check inter 3s rise 3 fall 3
server s2 192.168.1.3:8080 weight 4 maxconn 1000 check inter 3s rise 3 fall 3
 

 访问192.168.1.2:8099/haproxy-stats 用户名:admin1 密码:admin1234可以看到s1与s2已经可以看到了

 参考资料:haproxy+tomcat集群搭建 - lichmama - 博客园

------------------------------------------haproxy 搭建完成------------------------

------------------------------------------nfs 搭建开始------------------------

 192.168.1.4是服务端

192.168.1.3与192.168.1.2是客户端

nfs系统
参考地址:https://blog.csdn.net/guopengNo1/article/details/102741830
客户端和服务端都需要安装nfs-utils 和 rpcbind,
客户端的nfs-utils不需要启动
配置需要共享的目录
服务端:vim /etc/exports
# 添加如下内容到exports中:(修改后执行exportfs -arv)
/opt/public 192.168.1.2(rw,sync,no_root_squash) 
/opt/public 192.168.1.3(rw,sync,no_root_squash)

客户端1
mount -t nfs 192.168.0.4:/opt/public /opt/public
客户端2
mount -t nfs 192.168.0.4:/opt/public /opt/public 

若客户端运行该命令无反应卡死请检查这两台机器是否可以通信


# 启动
systemctl start rpcbind.service(服务端与客户端)
systemctl start nfs-server.service(服务端)


# 停止
systemctl stop rpcbind.service (服务端与客户端)
systemctl stop nfs-server.service(服务端)

# 查看状态
[root@localhost nfs]# service rpcbind status (服务端与客户端)
[root@localhost nfs]# service nfs-server status(服务端)

挂载的服务突然停了,导致客户端的挂载的文件夹不能访问,在客户端运行sudo umount -l 挂载点 
umount /opt/public 卸载挂载点

参考地址:Linux CentOS NFS 服务端及客户端安装配置挂载_guopengNo1的专栏-CSDN博客

Linux将目录设置为所有人都能读写_rocklee的专栏-CSDN博客_linux所有人读权限

------------------------------------------nfs 搭建完成------------------------

apache的安装不在赘述请自行百度

参考地址Linux Apache 图片服务器_weixin_33845881的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值