负载均衡 + mysq主从配置

负载均衡的作用:

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


记得关闭防火墙
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 摘要:面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采...
    layjoy阅读 13,872评论 3 93
  • 面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效...
    心空如大海阅读 415评论 0 1
  • 四层负载均衡:仅仅建立一次 TCP 连接 七层负载均衡:负载均衡器与客户端及后端的服务器会分别建立一个 TCP 连...
    养码哥阅读 1,625评论 0 6
  • 摘自偶像的文章,不过适合今天的基调,我们没过什么节,过的是初十~ 二十几岁的年纪,脱贫比脱单更重要。 单身...
    cynthia_0403阅读 167评论 0 1
  • 我就像一只老鼠。狡猾。十分危险。 战战兢兢地递了证明条,“自然卷……”长长的拖音,从高音调“自”卷一圈舌头再悄悄地...
    鱻默阅读 347评论 3 4