笔记随笔-生活工作点滴

负载均衡 + mysq主从配置

2019-07-09  本文已影响14人  vins

负载均衡的作用:

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 主从

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

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


记得关闭防火墙
上一篇 下一篇

猜你喜欢

热点阅读