美文网首页
nginx反向代理、Session Replication、my

nginx反向代理、Session Replication、my

作者: haoxi2018 | 来源:发表于2019-03-29 19:44 被阅读0次

    (第二十周作业)

    1、搭建Tomcat集群,并通过nginx反向代理访问
    需要两台虚拟机
    A机:安装tomcat(端口:8080),nginx(端口80)  IP地址:192.168.183.164
    B机:安装tomcat(端口:8080), IP地址:192.168.183.163
    1)A机安装nginx
    安装openssl库
    # yum install -y openssl openssl-devel
    安装gcc:
    # yum install gcc-c++   
    安装 PCRE   
    # yum install -y pcre pcre-devel
    安装zlib库 
    # yum install -y zlib zlib-devel
    下载nginx:  nginx-1.14.2.tar.gz
    解压,编译安装
    # tar -zxvf nginx-1.14.2.tar.gz
    # cd nginx-1.14.2
    # make && make install
    启动nginx
    # cd /usr/local/nginx/sbin
    # ./nginx
    2)A机和B机都要安装tomcat
    上传apache-tomcat-8.0.47.0.tar到/root
    # cd /root
    #  tar -xf apache-tomcat-8.0.47.0.tar
    #  mv apache-tomcat-8.0.47.0 tomcat
     启动tomcat服务
    # /root/tomcat/bin/startup.sh
    查看日志
    # tail -f /root/tomcat/logs/catlina.out
    等出现Started UP表示启动完成
    关闭防火墙
    # service firewalld stop
    从宿主机打开浏览器来访问http://<ip>:8080,可以看到tomcat的首页
    修改首页内容让AB机有区别。
    3)配置nginx.conf做反向代理

    #后端tomcat服务器
    upstream apachetomcat  {
        #这里可以配置多台服务器和端口号
        server 192.168.184.163:8080;
        server 192.168.184.164:8080;
    }
    server {
        listen 80;
        server_name  192.168.184.164;
        #定义日志位置
        access_log  logs/tomcat.access.log  main;
        error_log  logs/tomcat.error.log;
         #配置站点根目录会根据完整的URI请求来映射
        root  html;
        #默认页面
        index  index.html index.htm index.jsp;
        #url映射
        location / {
            root  html;
            index  index.html index.htm;
            proxy_pass  http://apachetomcat;    #proxy_pass配置为:http:// + upstream名称       
        }
    }

    访问http://192.168.184.164,观察两次的tomcat页面不一样,说明一会是访问A机,一会是访问B机。

    2、搭建Tomcat集群, 配置Session Replication实现Session共享
    需要两台虚拟机
    A机:安装tomcat(端口:8080),apache(端口80)  IP地址:192.168.183.151
    B机:安装tomcat(端口:8080), IP地址:192.168.183.150
    1)A机安装apache
    # yum install httpd -y
    # vi /etc/httpd/conf/httpd.conf

    #加载以下三个模块
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
    #在配置文件末端加入以下代码
    ProxyPass /  balancer://tomcatcluster/
    ProxyPassReverse /  balancer://tomcatcluster/ 
    <Proxy balancer://tomcatcluster> 
      BalancerMember ajp://192.168.183.151:8009 route=a 
      BalancerMember ajp://192.168.183.151:8009 route=b
    </Proxy>

    2)A机B机安装tomcat
    (安装步骤参考第1题的第(2)步)
    3)A机B机配置tomcat
    先开启网卡的组播地址
    #  route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
    修改tomcat安装目录下的conf/server.xml

    <!-- Define an AJP 1.3 Connector on port 8009 -->
        <Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
    <!-- 在加上route,jvmRoute,A机为a,B机为b,与apache配置文件中对应-->
    <!-- Define the top level container in our container hierarchy -->
        <Engine name="Catalina" defaultHost="localhost" jvmRoute="a">
    <!--tomcat集群 -->
    <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
                     managerClassName="org.apache.catalina.cluster.session.DeltaManager"
                     expireSessionsOnShutdown="false"
                     useDirtyFlag="true"
                     notifyListenersOnReplication="true">
        <Membership
                    className="org.apache.catalina.cluster.mcast.McastService"
                    mcastAddr="224.0.0.1"
                    mcastPort="45564"
                    mcastFrequency="500"
                    mcastDropTime="3000"/>
        <Receiver
                    className="org.apache.catalina.cluster.tcp.ReplicationListener"
                    tcpListenAddress="192.168.183.151"
                    tcpListenPort="4001"
                    tcpSelectorTimeout="100"
                    tcpThreadCount="6"/>
        <Sender
                    className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
                    replicationMode="pooled"
                    ackTimeout="15000"
                    waitForAck="true"/>
        <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
                       filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
        <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"

                          tempDir="/tmp/war-temp/"
                          deployDir="/tmp/war-deploy/"
                          watchDir="/tmp/war-listen/"
                          watchEnabled="false"/>
    <ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
    </Cluster>

     上文中tcpListenAddress的值,A机就写A机的IP,B机就写B机的IP。
    在tomcat安装目录下webapps子目录中的应用程序里的WEB-INF目录下的web.xml

    <web-app>
        ……
        <distributable/>
    </web-app>

    3、搭建mysql服务器,并实现主从复制
    需要两台虚拟机
    A机:安装mysql(主机),IP:192.168.183.201
    B机:安装mysql(从机),IP:192.168.183.202
    1)A机B机安装mysql
    #yum -y install MariaDB-server MariaDB-client
    2)主机A机配置
    修改my.cnf配置文件
    # vi /etc/my.cnf

    [mysqld]
    ……
    log-bin = master-bin
    log-bin-index = master-bin.index
    server-id = 1

    其中log-bin表示二进制日志文件的基本名,log-bin-index 二进制索引文件的文件名,它保存了所有binlog文件的列表,server-id要唯一,master
    机与slave从机ID不能相同。
    保存配置文件,重启mariadb使配置生效
    # systemctl restart mariadb
    在主机上创建一个复制用户
    # mysql -u root
    mysql>CREATE USER repl_user;
    mysql>GRANT REPLICATION SLAVE ON *.* TO repl_user IDENTIFIED BY 'copycopy';
    3)从机B机配置
    修改my.cnf配置文件
    # vi /etc/my.cnf

    [mysqld]
    ……
    relay-log = slave-relay-bin
    relay-log-index = slave-relay-bin.index
    server-id = 2

    relay-log和relay-log-index是中继日志文件和中继索引文件的设置
    保存配置文件,重启mariadb使配置生效
    # systemctl restart mariadb
    在从机上创建和运行复制
    # mysql -u root
    mysql> CHANGE MASTER TO
        ->    MASTER_HOST = '192.168.183.201',
        ->    MASTER_PORT = '3306',
        ->    MASTER_USER = 'repl_user',
        ->    MASTER_PASSWORD = 'copycopy';
    mysql> START SLAVE;
    查看复制状态
    在A机上
    # mysql -u root
    mysql>SHOW MASTER STATUS\G
    4、搭建mysql服务器,实现数据库的备份和还原
    需要一台虚拟机,在上面安装mysql
    # yum -y install MariaDB-server MariaDB-client
    登录数据库
    # mysql -u root 
    创建数据库
    mysql> create databases abc;
    mysql> use abc;
    mysql>create table `student`(
    >                `student_id`  INT UNSIGNED AUTO_INCREMENT,
    >                 `name` varchar(40) not null,
    >                `birthday`  DATE not null,
    >                `sport`   varchar(255),
    >                PRIMARY KEY ( `student_id` )
    >                )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    插入数据
    mysql>INSERT INTO    `student` ( name,birthday,sport )
    >                values
    >                ("zs","2000-08-07","football");
    mysql>INSERT INTO    `student` ( name,birthday,sport )
    >                values
    >                ("ls","2000-09-07","swimming");
    mysql>quit;
    然后做数据库备份
    #  mysqldump  -uroot   --default-character-set=UTF8  abc  >  /root/abc.sql
    备份好后,把数据库删除
    # mysql -u root 
    mysql> drop database abc;
    查看是否删除掉
    mysql > show databases;
    mysql>quit;
    然后使用命令进行恢复
    #  mysql  -uroot   --default-character-set=UTF8  abc   <  /root/abc.sql
    然后登录数据库查看是否恢复成功
    # mysql -u root
    mysql> show databases;
    mysql>use abc;
    mysql>select * from student;

    相关文章

      网友评论

          本文标题:nginx反向代理、Session Replication、my

          本文链接:https://www.haomeiwen.com/subject/lttxbqtx.html