美文网首页笔记随笔-生活工作点滴
负载均衡 + mysq主从配置

负载均衡 + mysq主从配置

作者: vins | 来源:发表于2019-07-09 17:39 被阅读14次

    负载均衡的作用:

    1.解决并发压力,提高应用处理性能(增加吞吐量,加强网络处理能力);
    2.提供故障转移,实现高可用;
    3.通过添加或减少服务器数量,提供网站伸缩性(扩展性);
    4.安全防护;(负载均衡设备上做一些过滤,黑白名单等处理)

    负载均衡分类

    可分为DNS负载均衡,HTTP负载均衡,IP负载均衡,反向代理负载均衡、链路层负载均衡等。

    负载均衡算法:

    轮询、 随机、最少链接、Hash(源地址散列)

    加权硬件负载均衡:

    采用硬件的方式实现负载均衡,一般是单独的负载均衡服务器,价格昂贵,一般土豪级公司可以考虑,业界领先的有两款,F5和A10。价格:F5, 15w~55w不等;A10, 55w-100w不等。优点:功能全面支持各层级的负载均衡,支持全面的负载均衡算法,支持全局负载均衡。一般软件负载均衡支持到5万级并发已经很困难了,硬件负载均衡可以支持。商用硬件负载均衡稳定性高,具备防火墙,防DDOS攻击等安全功能,提供售后支持.

    配置方法

    一般需要三台服务器 其中一台作为分流服务器 另外两台负责信息展示;
    配置方法: 在nginx.conf配置文件中http括号内添加如下配置:(备注:添加upstream load.com{} 和 location /{} 并注释掉server{}中1,server_name; 2,index index.html index.htm index.php; 3,root /home/wwwroot/default;)

    user  www www;
    
    worker_processes auto;
    worker_cpu_affinity auto;
    
    error_log  /home/wwwlogs/nginx_error.log  crit;
    
    pid        /usr/local/nginx/logs/nginx.pid;
    
    #Specifies the value for maximum file descriptors that can be opened by this process.
    worker_rlimit_nofile 51200;
    
    events
        {
            use epoll;
            worker_connections 51200;
            multi_accept off;
            accept_mutex off;
        }
    
    http
        {
            include       mime.types;
            default_type  application/octet-stream;
    
            server_names_hash_bucket_size 128;
            client_header_buffer_size 32k;
            large_client_header_buffers 4 32k;
            client_max_body_size 50m;
    
            sendfile on;
            sendfile_max_chunk 512k;
            tcp_nopush on;
    
            keepalive_timeout 60;
    
            tcp_nodelay on;
    
            fastcgi_connect_timeout 300;
            fastcgi_send_timeout 300;
            fastcgi_read_timeout 300;
            fastcgi_buffer_size 64k;
            fastcgi_buffers 4 64k;
            fastcgi_busy_buffers_size 128k;
            fastcgi_temp_file_write_size 256k;
    
            gzip on;
            gzip_min_length  1k;
            gzip_buffers     4 16k;
            gzip_http_version 1.1;
            gzip_comp_level 2;
            gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
            gzip_vary on;
            gzip_proxied   expired no-cache no-store private auth;
            gzip_disable   "MSIE [1-6]\.";
    
            #limit_conn_zone $binary_remote_addr zone=perip:10m;
            ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.
    
            server_tokens off;
            access_log off;
    #轮训ip地址
    upstream load.com
        {
            server 192.168.1.24;
            server 192.168.1.23;
        }
    
    server
        {
            listen 80 default_server;
            #listen [::]:80 default_server ipv6only=on;
            #server_name _;
            #index index.html index.htm index.php;
            #root  /home/wwwroot/default;
    
            include enable-php.conf;
            #error_page   404   /404.html;
        location /
        {
          #指定接受请求之后适用哪个服务组响应web服务
          proxy_pass http://load.com;
          #指定请求传递写一个服务器状态码
          proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
          #反向代理后保持原有的host名字
          proxy_set_header Host $host;
              #设置后端服务器获取用户的主机名或真实的ip地址,以及代理者的真实ip地址
          proxy_set_header X-Forwarded-For $remote_addr;
          #stub_status on;
          #access_log   off;
        }
            # Deny access to PHP files in specific directory
            #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
    
    
            location /nginx_status
            {
                stub_status on;
                access_log   off;
            }
    
            location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
            {
                expires      30d;
            }
    
            location ~ .*\.(js|css)?$
            {
                expires      12h;
            }
    
            location ~ /.well-known {
                allow all;
            }
    
            location ~ /\.
            {
                deny all;
            }
    
            access_log  /home/wwwlogs/access.log;
        }
    include vhost/*.conf;
    }
    

    配置mysql 主从

    备注: 关闭主从服务器的防火墙 避免两台服务器不能通信

    • 主服务器配置
      1.授权给从数据库服务
    mysql>GRANT REPLICATION SLAVE ON *.* to 'root'@'192.168.1.24' identified by '123456';
    mysql>FLUSH PRIVILEGES;
    

    2.修改主服务器 /etc/my.cnf [mysqld]中加入以下代码

    要同步的数据库名
    binlog-do-db = db
    不同步mysql库和test库
    binlog-ignore-db = mysql 
    binlog-ignore-db = test
    

    3.修改配置文件后,重启服务:service mysqld restart
    4.执行命令:show master status; 如图所示



    至此,主服务器已配置好

    • 从服务器配置
    1. 修改 /etc/my.cnf [mysqld]中
    server-id   = 2
    保证 server-id 的唯一性  不要与主服务器重复
    

    2.执行以下代码

    mysql>CHANGE MASTER TO MASTER_HOST='192.168.1.23',MASTER_PORT=3306,MASTER_USER='root',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000018',MASTER_LOG_POS=120;
    其中MASTER_LOG_FILE:为主数据库的File,  MASTER_LOG_POS为主数据库的Position
    

    3.启动从服务器

    mysql>slave start;
    

    出现以下提示则证明配置成功
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes


    记得关闭防火墙

    相关文章

      网友评论

        本文标题:负载均衡 + mysq主从配置

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