Nginx+Keepalived+Tomcat高可用负载均衡,Zookeeper集群配置,Mysql(MariaDB)搭建,Redis安装,FTP配置
JDK 安装步骤
下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html rpm -ivh jdk-8u171-linux-x64.rpm cd ~
vim .bash_profile
输入命令添加环境变量:
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH:$HOME/bin
export PATH [root@localhost ~]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode) [root@localhost ~]# javac -version
javac 1.8.0_171
-------------------
Tomcat安装
[root@localhost soft]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.31/bin/apache-tomcat-8.5.31.tar.gz
[root@localhost soft]# tar -zxvf apache-tomcat-8.5.31.tar.gz
[root@localhost data]# mv apache-tomcat-8.5.31 tomcat-8801
tomcat-8801
端口 8801 8105 8543 8201
端口 8802 8106 8544 8202
端口 8803 8107 8545 8203 server
端口 8804 8108 8546 8204 job
端口 8088 8104 8542 8200 Dubbo
<Connector port="" protocol="HTTP/1.1" connectionTimeout=""
redirectPort="" URIEncoding="UTF-8" /> [root@localhost bin]# vim catalina.sh
修改/apache-tomcat-8.5.16/bin/catalina.sh
在catalina.sh中的 “#!/bin/sh” 下面添加如下代码:
if [[ "$JAVA_OPTS" != *-Djava.security.egd=* ]]; then
JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom"
fi 在
# Get standard environment variables
PRGDIR=`dirname "$PRG"`
下添加下面代码
#设置记录CATALINA_PID。
#该设置会在启动时候bin下新建一个CATALINA_PID文件
#关闭时候从CATALINA_PID文件找到pid,kill。。。同时删除CATALINA_PID文件
if [ -z "$CATALINA_PID" ]; then
CATALINA_PID=$PRGDIR/CATALINA_PID
fi vim tomcat的shutdown.sh文件,在最后一行加上-force;
例:exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"
--------------------------
防火墙开放端口
开放端口
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8801 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8802 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8803 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8804 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8088 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 2181 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 2182 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 2183 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 9952 -j ACCEPT /sbin/iptables -I INPUT -p tcp --dport 2181 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 2182 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 2183 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 9952 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8801 -j ACCEPT 保存之前输入已开放端口号语句的命令
/etc/rc.d/init.d/iptables save
查看打开端口命令
/etc/init.d/iptables status
---------------------------
Nginx安装
安装编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel [root@localhost soft]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
[root@localhost soft]# tar -zxvf pcre-8.35.tar.gz
[root@localhost data]# cd pcre-8.35
[root@localhost pcre-8.35]# ./configure
[root@localhost pcre-8.35]# make && make install
[root@localhost pcre-8.35]# pcre-config --version
8.35
[root@localhost soft]# wget http://nginx.org/download/nginx-1.14.0.tar.gz
[root@localhost soft]# tar -zxvf nginx-1.14.0.tar.gz
[root@localhost soft]# cd nginx-1.14.0
[root@localhost soft]# ./configure --prefix=/data/nginx-1.14.0 --with-http_stub_status_module --with-http_ssl_module --with-pcre=/data/pcre-8.35
[root@localhost nginx-1.14.0]# make
[root@localhost nginx-1.14.0]# make install
[root@localhost sbin]# cd /data/nginx-1.14.0/sbin
[root@localhost sbin]# ./nginx -V
nginx version: nginx/1.14.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/data/nginx-1.14.0 --with-http_stub_status_module --with-http_ssl_module --with-pcre=/data/pcre-8.35
#指定配置文件启动
[root@localhost conf]# /data/nginx-1.14.0/sbin/nginx -c /data/nginx-1.14.0/conf/nginx.conf
[root@localhost sbin]# ./nginx -s reload # 重新载入配置文件
[root@localhost sbin]# ./nginx -s reopen # 重启 Nginx
[root@localhost sbin]# ./sbin/nginx -s stop # 停止 Nginx Nginx 负载均衡及请求转发
文档:https://www.cnblogs.com/wzjhoutai/p/6932007.html
[root@localhost sbin]# vim /data/nginx-1.14.0/conf/nginx.conf
http下添加(upstream后的名字不要有-_的符号)
upstream linuxIdc{
server 192.168.37.131:8801;
server 192.168.37.131:8802;
}
server 下添加
server {
listen 80;
server_name 192.168.37.131; location / {
root html;
index index.html index.htm;
} location /qdp-cr-web/ {
proxy_pass http://linuxIdc/;
}
}
[root@localhost sbin]# ./nginx -s stop
[root@localhost sbin]# /data/nginx-1.14.0/sbin/nginx -c /data/nginx-1.14.0/conf/nginx.conf
----------------------
Keeplived 安装
wget http://www.keepalived.org/software/keepalived-2.0.0.tar.gz
[root@localhost soft]# tar -zxvf keepalived-2.0.0.tar.gz
[root@localhost soft]# cd keepalived-2.0.0
[root@localhost keepalived-2.0.0]# ./configure --prefix=/data/keepalived-2.0.0
[root@localhost keepalived-2.0.0]# make && make install
[root@localhost keepalived]# cd /data/keepalived-2.0.0/etc/keepalived
[root@localhost keepalived]# cp keepalived.conf keepalived.conf_bak
主192.168.37.131
备192.168.37.132
VIP192.168.37.222
[root@localhost keepalived]# vim /etc/hosts
192.168.37.131 node1
[root@localhost keepalived]# vim keepalived.conf
-- master
! Configuration File for keepalived global_defs {
router_id node1
}
vrrp_script chk_nginx {
script "/lhdata/application/keepalived-2.0.0/etc/keepalived/chk_nginx.sh"
interval 2
weight -5
fall 2
rise 1
}
vrrp_instance VI_1 {
state MASTER
interface eth4
mcast_src_ip 192.168.15.121
virtual_router_id 253
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass cr_ha_keeplived
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.15.253
}
} -- salve
! Configuration File for keepalived global_defs {
router_id node2
}
vrrp_script chk_nginx {
script "/lhdata/application/keepalived-2.0.0/etc/keepalived/chk_nginx.sh"
interval 2
weight -5
fall 2
rise 1
}
vrrp_instance VI_1 {
state BACKUP
interface eth4
mcast_src_ip 192.168.15.122
virtual_router_id 253
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass cr_ha_keeplived
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.15.253
}
} -----
[root@localhost keepalived]# vim chk_nginx.sh
#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "" ]; then
/data/nginx-1.14.0/sbin/nginx
sleep 2
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "" ]; then
killall keepalived
fi
fi
[root@localhost keepalived]# chmod 755 chk_nginx.sh
[root@localhost sbin]# cd /data/keepalived-2.0.0/sbin
[root@ora sbin]# /data/keepalived-2.0.0/sbin/keepalived -f /data/keepalived-2.0.0/etc/keepalived/keepalived.conf VRRP协议也需要设置防火墙! iptables -I INPUT -i eth0 -d 224.0.0.0/8 -p vrrp -j ACCEPT
iptables -I OUTPUT -o eth0 -d 224.0.0.0/8 -p vrrp -j ACCEPT
service iptables save
service iptables restart
---------------------------
Redis 安装
[root@ora soft]# tar -zxvf redis-4.0.6.tar.gz
[root@ora redis-4.0.6]# make
[root@ora redis-4.0.6]# cp redis.conf redis.conf_bak
[root@ora redis-4.0.6]# vim redis.conf
# bind 127.0.0.1
protected-mode no
#启动
[root@ora src]# ./redis-server /longfor_data/application/redis-4.0.6/redis.conf &
------------------
mysql数据库安装
[root@ora /]# yum install -y ncurses-devel libaio bison gcc-c++ openssl-devel
[root@ora /]# wget http://ftp.ubuntu-tw.org/mirror/mariadb//mariadb-10.2.15/bintar-linux-x86_64/mariadb-10.2.15-linux-x86_64.tar.gz
[root@ora soft]# tar -zxvf mariadb-10.2.15-linux-x86_64.tar.gz
[root@ora soft]# groupadd mysql
[root@ora soft]# useradd -g mysql mysql
[root@ora application]# mv mariadb-10.2.15 mysql
[root@ora mysql]# chown mysql:mysql -Rf /longfor_data/application/mysql/
[root@ora mysql]# chmod +x -Rf /longfor_data/application/mysql/
[root@ora mysql]# cp support-files/my-medium.cnf /etc/my.cnf
[root@ora mysql]# scripts/mysql_install_db --user=mysql
[root@ora mysql]# cp support-files/mysql.server /etc/init.d/mysql
[root@ora etc]# vim my.cnf
[mysqld]下
basedir=/longfor_data/application/mysql
1)修改字符集为UTF8
#vi /etc/my.cnf
在[client]下面添加 default-character-set = utf8
在[mysqld]下面添加 character_set_server = utf8
修改完重启:#service mysql restart
2)增加错误日志
#vi /etc/my.cnf
在[mysqld]下面添加:
log-error = /usr/local/mysql/log/error.log
general-log-file = /usr/local/mysql/log/mysql.log
修改完重启:#service mysql restart
3) 设置为不区分大小写,linux下默认会区分大小写。
#vi /etc/my.cnf
在[mysqld]下面添加:
lower_case_table_name=1
修改完重启:#service mysql restart [root@ora mysql]# chkconfig mysql on
[root@ora mysql]# service mysql start
[root@ora ~]# cd
[root@ora ~]# vim .bash_profile
export PATH=/longfor_data/application/mysql/bin:$PATH
[root@ora ~]# source .bash_profile
[root@ora ~]# mysqladmin -u root password 'pass!@#cr'
[root@ora ~]# mysql -uroot -p
Enter password:
MariaDB [(none)]> show databases
MariaDB [(none)]> use mysql
Database changed
MariaDB [mysql]> select host,user,password from user;
MariaDB [mysql]> delete from user where user='';
MariaDB [mysql]> flush privileges;
MariaDB [mysql]> CREATE DATABASE IF NOT EXISTS qdp_adverts DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDB [mysql]> CREATE USER 'wysob'@'%' IDENTIFIED BY 'crPass!@#0614';
MariaDB [mysql]> update user set password=PASSWORD('pass!@#cr') where user='root';
MariaDB [mysql]> flush privileges;
MariaDB [mysql]> grant all on qdp_adverts.* to 'wysob'@'%' identified by 'crPass!@#0614';
MariaDB [mysql]> flush privileges;
# 取消授权
REVOKE all ON qdp_adverts.* FROM 'wysob'@'%';
----------------------
Zookeeper安装
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
tar -zxvf zookeeper-3.4.10.tar.gz
cd zookeeper-3.4.10/
cp zoo_sample.cfg zoo1.cfg
cp zoo1.cfg zoo2.cfg
cp zoo1.cfg zoo3.cfg
#zoo1.cfg
clientPort=2181
dataDir=/lhdata/tmp/zookeeper/1
dataLogDir=/lhdata/tmp/zookeeper/1
server.1=192.168.37.131:2888:3888
server.2=192.168.37.131:2889:3889
server.3=192.168.37.131:2890:3890 #zoo2.cfg 2182
clientPort=2182
dataDir=/lhdata/tmp/zookeeper/2
dataLogDir=/lhdata/tmp/zookeeper/2
server.1=192.168.37.131:2888:3888
server.2=192.168.37.131:2889:3889
server.3=192.168.37.131:2890:3890 zoo3.cfg 2183
clientPort=2183
dataDir=/lhdata/tmp/zookeeper/3
dataLogDir=/lhdata/tmp/zookeeper/3
server.1=192.168.37.131:2888:3888
server.2=192.168.37.131:2889:3889
server.3=192.168.37.131:2890:3890 [root@localhost zookeeper-3.4.10]# cd /lhdata/application/zookeeper-3.4.10/ echo '1' > /lhdata/tmp/zookeeper/1/myid
echo '2' > /lhdata/tmp/zookeeper/2/myid
echo '3' > /lhdata/tmp/zookeeper/3/myid [root@localhost zookeeper-3.4.10]# vim start_all_zookeeper.sh
写入
cd /lhdata/application/zookeeper-3.4.10/
nohup bin/zkServer.sh start ./conf/zoo1.cfg &
nohup bin/zkServer.sh start ./conf/zoo2.cfg &
nohup bin/zkServer.sh start ./conf/zoo3.cfg & -------------------
安装 dubbo-admin
[root@iZm5eafpnt57xvwsi8ggywZ WEB-INF]# vim dubbo.properties
dubbo.registry.address=zookeeper://192.168.15.121:2181?backup=192.168.15.122:2182,192.168.15.151:2183
http://192.168.37.131:8088/dubbo-admin-2.5.8/ root root ------------------
[root@localhost qdp-adverts-job-8084]# vim /etc/hosts
192.168.37.131 qaskyline.qdingnet.com
-----------------------
ftp搭建
[root@localhost lhdata]# rpm -qa | grep vsftpd
[root@localhost lhdata]# service vsftpd start
[root@localhost lhdata]# mkdir -p /lhdata/data/ftp
[root@localhost lhdata]# adduser -s /bin/nologin -d /lhdata/data/ftp/qdpftp qdpftp
[root@localhost lhdata]# passwd qdpftp
[root@localhost home]# cd /etc/vsftpd/
[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
local_root=/lhdata/data/ftp
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=NO
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
[root@node3 vsftpd]# vim user_list
添加
qdpftp
[root@node3 pam.d]# vim /etc/pam.d/vsftpd
注释
#auth required pam_shells.so
法1:执行命令setsebool -P ftp_home_dir on命令或者执行 setsebool -P ftpd_disable_trans on 命令,
然后执行service vsftpd restart命令重启vsftpd服务
法2:关闭selinux,修改/etc/selinux/config文件或/etc/syscofnig/selinux设置SELINUX= disabled ,然后重启
[root@node3 pam.d]# mkdir /lhdata/data/ftp/qdpftp
[root@node3 pam.d]# chown -R qdpftp:qdpftp /lhdata/data/ftp/qdpftp
[root@node3 pam.d]# chmod -R 777 /lhdata/data/ftp/qdpftp
[root@localhost lhdata]# service vsftpd restart
测试登录FTP
[c:\~]$ ftp 192.168.15.151 或浏览器 ftp://192.168.15.151
Nginx+Keepalived+Tomcat高可用负载均衡,Zookeeper集群配置,Mysql(MariaDB)搭建,Redis安装,FTP配置的更多相关文章
- Nginx keepalived实现高可用负载均衡详细配置步骤
Keepalived是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层.第4层和第7层交换机的功能.主要提供loadbalancing(负载均衡) ...
- Linux 系统中部署 LNMP 高可用负载均衡架构集群实现动态博客
(一)设计思路 高可用:keepalived 解决方案 负载均衡:(lvs)DR做轮询,需要一个调度器,后端节点两个(部署nginx动态博客),通过一个vip去访问动态博客 后端节点需要部署动态博客作 ...
- 【线上测试之后的应用】基于MySQL+MHA+Haproxy构建高可用负载均衡数据库集群(详解)
这里我们先介绍一下MHA是什么,其次就是它的应用与测试,同时为了大家呈现了数据备份案例,最后总结了使用情况以及注意事项和解决办法 一.MHA 概述 MHA(Master High Availabili ...
- LVS+Keepalived 实现高可用负载均衡
前言 在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的.此时最常见的方式就是通过负载均衡来进行横向扩展.其中我们最常用的软件就是 Nginx.通过其反向代理的能力能够轻松实现负载均衡,当有服务出 ...
- haproxy+keepalived实现高可用负载均衡
软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. HA ...
- haproxy+keepalived实现高可用负载均衡(转)
软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. ...
- Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群
一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...
- LVS+Keepalived实现高可用负载均衡(转)
LVS+Keepalived实现高可用负载均衡 一.原理 1.概要介绍 如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件,具 ...
- 【架构师之路】 LVS+Keepalived实现高可用负载均衡
一.原理 1.概要介绍 如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件,具有3~5层交换功能,其主要作用是检测web服务器的状态, ...
随机推荐
- IntelliJ IDEA无法更新maven索引
maven索引的作用时在添加dependency的时候能有自动提示,不影响dependency的下载: 解决办法: 1.http://ju.outofmemory.cn/entry/359450 2. ...
- java中的lis数组转为json数据
第一个想到的办法就是 javascript中的replace 也就是先将list数组转为 字符串再对 字符串 replace 但是万万没想到javascript的replace函数在替换数据时, 默 ...
- [leetcode] 329. Longest Increasing Path in a Matrix My Submissions Question
在递归调用的函数中使用了max = INT_MIN,结果报超时错误,改为max=0就对了,虽然在这题中最小就为0, 看来在之后最小为0的时候,就不要使用INT_MIN了.
- PAT Basic 1020
1020 月饼 (25 分) 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意 ...
- Vue(十四)过渡(动画)
过渡(动画) 1. 简介 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果 本质上还是使用CSS3动画:transition.animation 2. 基本用法 使用trans ...
- js动态时间(转)
html代码 <span id="timeShow" show_cur_times()></span> js代码 $(function(){ //设置1秒调 ...
- linux 系统下使用socket进行本地进程间通信
转自:https://blog.csdn.net/baidu_24553027/article/details/54912724 使用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不 ...
- SpringCloud无废话入门02:Ribbon负载均衡
1.白话负载均衡 在上一篇的介绍中,我们创建了两个一模一样的服务提供者:Provider1和Provider2,然后它们提供的服务也一模一样,都叫Hello-Service.为什么一样的服务我们要部署 ...
- Go语言栈定义及相关方法实现
// stack 栈 package Algorithm import ( "errors" "reflect" ) // 栈定义 type Stack str ...
- iOS:解决UITextView自适应高度粘贴大量文字导致显示不全的问题
一.描述 在UITextView输入框中粘贴大量的文字时,UITextView内容自适应高度计算出现误差,导致整块文字上移消失. 二.方案 在UITextView文字改变的监听中添加如下方法即可. [ ...