• linux 集群 读写分离 session入库 负载均衡 配置


    负载均衡
    转发用户的请求到后端服务器【平均分配:轮询】
    硬件:性能好,稳定,价格昂贵
    软件: 性能还行,稳定也还行,免费

    一般网站都用软件
    lvs: [已经集成到linux2.6及内核]
    hapoxy: 工作在第四层
    nginx[负载均衡服务器,web服务器,。。。] 工作在7层,只能做网站http协议的负载均衡

    mysql : 主从复制,读写分离 【当向主主服务器操作数据时,同样的数据会被自动复制到从服务器,就像一个镜像】

    php把上传的图片存到服务器->图片服务器[图片共享]->用一个二级域名

    解决session丢失的问题
    session共享[session入库 或者 session存到memcached]

    反向代理服务器:用户请求数据时先在本地查找缓存的页面,如果没有就到后端服务器请求数据,然后缓存,下次可以直接使用。

    【缓存时间和要缓存的页面 也都可以自己设置】

    穿透:网站中有些页面不能缓存【购物车,搜索页面】,那么可以配置成穿透的行为直接访问

    软件:
    squid: 缓存到硬盘上
    varnish[*]: 把数据缓存到内存中


    --------------------
    高可用【hign availiablity】:没有单点故障:集群中任何一台服务器出现故障,整个系统依然能对外服务。【备份一个负载均衡服务器就可以了】
    软件:hearbeat
    keepalived

    --------------------
    CDN:内容分发网络,全世界各地搭建数据节点,只适合静态页面!
    建议:不要自己搭建,维护成本比较高。

    ----------------------
    搭建自己的集群
    nginx 负载均衡-》nginx+php(两个) ->mysql主 从(两个)

    1 使用虚拟机克隆四个服务器

    centos5.5-》右键-》管理-》克隆-》点到 创建完整克隆(起个名字)-》完成
    负载均衡
    WEB1:
    WEB2:
    MYSQL 主:
    MYSQL 从:

    2 搭建mysql 的主从服务器
    2.1 主服务器
    修改配置文件 开启bin日志
    vim /etc/my.cnf
    #log-bin=mysql-bin //把注释去掉

    server-id =1
    创建一个用来实现主从复制的账号
    进入mysql: grant replication slave on *.* to 'slave'@'%' identified by '1234';
    replication slave: 分配给这个账号的限制
    *.*可以操作的数据库
    slave : 账号用户名
    1234:密码

    -------------
    查看主服务器上bin日志上的状态:[这两个参数在配置从服务器时要使用]
    show master status:
    file position
    mysql-bin.00006 248

    2.2 p配置从服务器
    修改配置文件,开启bin日志,把ID设置成和主不一样的server-id就行

    重启mysql 从服务器
    service mysqlid restart

    登录从服务器的mysql 并设置主服务器:
    change master to mast_host='主服务器的ip',master_user='用户名',msater_password="密码",master_log_file="mysql-bin.0006",master_log_pos=248;

    在从服务器上启动主从复制的功能:

    start slave; 配置完毕

    查看是否启动成功:
    show slave status;
    最后两个是yes 就表示成功了


    -----------------

    程序上实现读写分离
    --------
    TP 框架自带主从复制的功能,只需修改配置文件即可:
    tp 手册-》模型-》分布式数据库支持
    还要加上:'DB_RW_SEPARATE'=>true , // 表示支持读写分离
    --------------
    启动两台WEB服务器上的NGINX PHP:[两个分别一起启动]
    service nginx start;
    /usr/local/php/sbin/php-fpm &;

    配置两台服务器的允许两台php服务器来连接【mysql数据库默认只允许当前同一个服务器的程序连接】:

    先修改主服务器的mysql;
    use mysql;
    select host,user,password from user;
    查看host,修改成%允许所有IP连接即可:
    update user set host='%'; //最好设置能IP局域网段

    然后刷新数据库
    flush privileges;

    最后修改从服务器的 user,host;同上

    --------------------

    配置负载均衡服务器
    修改nginx 的配置文件
    vim /usr/local/nginx/conf/nginx.conf;

    在 http 大括号里写
    http {

    upstream web{
    server 192.168.**.** weight= 1 ; //weight 可以不写,
    server 192.168.**.** weight= 1; //1:1
    ...
    ...
    }

    //把之前的配置改成下面的
    server {
    listen 80;
    server_name 192.168.**.**; //自己的网站的IP
    location / {
    proxy_pass http://web; //web 是上面定义的web
    }
    }
    }

    只用一个server就可以了

    /us/local/nginx/sbin/nginx -t //检查配置文件改的对不对
    ok,successful 表示修改正确

    启动nginx:

    service nginx start

    到此完成!

    -----------------------------
    session 入库
    TP自带这个功能:
    先在mysql的主服务器上创建一个session表

    D:serverapachehtdocsThinkPHPLibraryThinkSessionDriver


    * 数据库方式Session驱动
    * CREATE TABLE think_session (
    * session_id varchar(255) NOT NULL,
    * session_expire int(11) NOT NULL,
    * session_data blob,
    * UNIQUE KEY `session_id` (`session_id`)
    * );

    先创建表,修改表前缀:
    复制数据库里的表的语句:
    create table .表名.. like ..表名...;

    删除表
    drop table ...表名;

    --------------
    2 修改程序的配置文件
    vim./Application/Commont/Conf/config.php

    加一句:
    return array(
    'SESSION_TYPE' =>'Db',

    )

    两个WEB都修改一下。


    世上无难事,只怕有心人......
  • 相关阅读:
    LVS NAT模式
    lvs部署-DR模式
    Lvs原理
    iOS判断UIScrollView的滚动方向
    Swift开发必备技巧:内存管理、weak和unowned
    Swift2.0异常处理
    Swift中的延迟加载(懒加载)
    Swift和OC混编时, 关于@objc的作用
    Swift函数的定义建议
    Swift隐式可选型简单介绍
  • 原文地址:https://www.cnblogs.com/gooderic/p/5947684.html
Copyright © 2020-2023  润新知