linux高级运维之memcache服务

案例1:构建memcached服务

案例2:LNMP+memcached

案例3:PHP的本地Session信息

案例4:PHP实现session共享

memcache简介及理论基础:

关系型数据库:mysql mariadb

    RDBMS即关系数据库管理系统(Relational Database Management System)

NoSQL,泛指非关系型的数据库

    kv key=vaule数据库

    redis mongdb  

传统web架构的问题:

    许多web应用都将数据保存到RDBMS中,应用从服务器中读取数据并在浏览器中显示

    随着数据量的增大,访问的集中就会出现RDBMS负载加重,数据响应恶化,网站显示延迟等重大影响

数据储存位置对比

    性能:CPU缓存>内存>磁盘>数据库

    价格:CPU缓存>内存>磁盘>数据库

memcached是高性能的分布式缓存服务器

    用来集中缓存数据库查询结果,减少数据库访问次数来提高动态web响应速度

    官网:http://memcached.org/

内存管理机制:

    传统的内存分配机制

        使用完通过分配的内存后回收内存,这种方式容易产生内存碎片并降低操作系统对内存的管理效率

    slab allocation机制

        按照预先规定的大小,将分配的内存分割成特定长度的内存块(chunk)再把尺寸相同的内存块分成组(chunk集合)这些内存不会释放,可以重复利用

memcached使用名为least recently used(LRU)机制来分配空间

    删除“最近最少使用”的记录

    当memcached的内存空间不足时,从最近未被使用的记录中搜索,并将其空间分配给新的记录

/usr/lib/systemd/system/   这个是systemctl的配置(启动脚本)文件的目录。

    这个目录下有对应的服务才能启动服务成功 systemctl start memcached  有这个能启动

    这个命令所有选项都是在这个目录下的脚本文件所影响的,可以把nginx加入进来用这个启,参考Apache模板。

ExecStart(函数连接)=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS

/etc/sysconfig/memcached

构建memcached服务

安装memcached软件,并启动服务

使用telnet测试memcached服务

对memcached进行增、删、改、查等操作

    yum -y  install   memcached

    memcached配置文件(查看即可,不需要修改)

        vim /usr/lib/systemd/system/memcached.service

        ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS

        vim /etc/sysconfig/memcached

            PORT="11211"

            USER="memcached"

            MAXCONN="1024"

            CACHESIZE="64"

            OPTIONS=""

    启动服务并查看网络连接状态验证是否开启成功

        systemctl  start  memcached

        systemctl  status  memcached

        netstat  -anptu  |  grep memcached  端口号11211

    使用telnet访问memcached服务器

        yum -y install telnet

        telnet  192.168.4.5  11211

            add name 0 180 10   //变量不存在则添加

            set name 0 180 10   //添加或替换变量

            replace name 0 180 10   //替换

            get name    //读取变量

            append name 0 180 10    //向变量中追加数据

            delete name //删除变量

            stats   //查看状态

            flush_all   //清空所有

            STAT get_hits 14  hits 击中(成功)了14次

            STAT get_misses 7  失败  7次

            提示:0表示不压缩,180为数据缓存时间,10为需要存储的数据字节数量。

    缓存过期时间:

    人搜索   缓存20个 数据库

    用户传视频  (音乐) ————youku

    人搜索   缓存20个 数据库

    1小时后

    人搜索   缓存21个 数据库     

####################################################################

LNMP+memcached:

部署LNMP实现PHP动态网站架构

为PHP安装memcache扩展

创建PHP页面,并编写PHP代码,实现对memcached的数据操作

    安装源码包的依赖包 

    yum -y install gcc openssl-devel pcre-devel zlib-devel

    安装完成nginx并启服务

    cd lnmp_soft/

    cd nginx-1.12.2/

    useradd -s /sbin/nolgin/ nginx 

    ./configure --help

    ./configure --prefix=/usr/local/nginx/ --user=nginx --group=nginx --with-http_ssl_module --with-stream

    make && make install

    ln -s /usr/local/nginx/sbin/nginx /sbin/

    nginx

    netstat -natulp |grep 80

    修改配置文件实现动静分离

    location / {

            root   html;

            index  index.php  index.html   index.htm;

        }

     location  ~  \.php$  {

            root           html;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

           # fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;

            include        fastcgi.conf;

        }

    安装php php-mysql(调用mariadb数据库的模块)

    php-fpm  php-pecl-memcache  (调用memcache数据库的模块)

    cd php_scripts/

    yum -y install  php  php-mysql

    yum -y install php-pecl-memcache

    yum -y install php-fpm-5.4.16-42.el7.x86_64.rpm

    安装mariadb(客户端) mariadb-server(服务端) mariadb-devel(依赖包)

    yum -y install  mariadb  mariadb-server  mariadb-devel

    安装nosql数据库

    yum -y install memcached

    启服务和关防火墙

    nginx mariadb php-fpm memcached 服务

    nginx

    systemctl restart mariadb

    systemctl enable mariadb

    systemctl restart php-fpm

    systemctl enable php-fpm

    systemctl restart memcached.service 

    systemctl enable memcached

    setenforce 0

    firewall-cmd --set-default-zone=trusted

    验证:

    cp mem.php  /usr/local/nginx/html

    curl 192.168.2.111/mem.php (结果为test)

####################################################

PHP的本地Session信息

    部署Nginx为前台调度服务器

    调度算法设置为轮询

    后端为两台LNMP服务器

    部署测试页面,查看PHP本地的Session信息

        会员卡ID001

        人--------------------------------------》超市会员『登记信息』

                        001.txt信息   

                        002.txt信息

                        002.txt信息

        会员卡ID002

        人--------------------------------------》超市会员『登记信息』

                        001.txt信息   

                        002.txt信息

                        002.txt信息

        会员卡ID003

        人--------------------------------------》超市会员『登记信息』

                        001.txt信息   

                        002.txt信息

                        002.txt信息

        firefox----------------------->登陆Session信息

        (cookie=001)        001.txt信息   

                        002.txt信息

                        002.txt信息

    ip_hash解决:

                                                               web1  id1.txt{信息}

        user(IP)   proxy(代理)         web2  id2.txt{信息}  公共服务器

                                                                web3  id3.txt{信息}

        cookie="Hm_lvt...sessionid=287679e630584099aa29780a0f7658bd%7CP%23375184726%40qq.com%7C%7C1%7C0%7C0%7C%7C0%7C0%7C0"

            //浏览器中可以看到sessionid。

步骤:

    部署后端LNMP服务器相关软件(两台后端服务器操作相同)

        //实现动静分离即可   不必安装memcached

    启动LNMP服务器相关的服务并关闭防火墙

    部署前端Nginx调度服务器

        安装nginx软件

        修改Nginx配置文件实现调度

        nginx -s reload

        关闭SELinux、防火墙

        curl  http://192.168.4.5/index.html  //测试

    部署后端LNMP服务器测试页面(两台后端服务器操作相同)

            //可用修改index.php和home.php两个文件的内容,添加页面颜色属性

              以区别后端两台不同的服务器:<body bgcolor=blue>

        cd lnmp_soft/php_scripts/

        tar -xf php-memcached-demo.tar.gz

        cd php-memcached-demo

        cp -a  *  /usr/local/nginx/html/

            修改默认首页

            location / {

                 root   html;

                    index  index.php index.html index.htm;  

                //这个是以顺序来找的,第一个没找到就找第二个。

                     }

        firefox http://192.168.2.100            //填写账户信息

                //这步测试时只能访问后端的web不能访问代理

                而且要清空流量器的缓存才能 在/var/lib/php/session/下记录ID2 ID3等

        ls /var/lib/php/session/            //查看服务器本地的Session信息

            sess_ahilcq9bguot0vqsjtd84k7244   //注意这里的ID是随机的

    浏览器访问前端调度器测试(不同后端服务器Session不一致)

        google-chrome http://192.168.4.5    //推荐用google

            //填写注册信息后,刷新,还需要再次注册,说明两台计算机使用的是本地Session

            //第二台主机并不知道你再第一台主机已经登录,第一台主机的登录信息也没有传递给第二台主机

            //实际情况是:能进入登录后跳转界面,一刷新会由web1变到web2,且能看出用户名不一样!!!

            Welcome : haha 

            Welcome : xixi 

            这里的用户名会变化 意味着你之前登陆的用户名和帐号在另外一台web服务器上不生效了。

PHP实现session共享(续上实验)

Nginx服务器除了承担调度器外,还需要担任memcached数据库的角色,并在两台后端LNMP服务器上实现PHP的session会话共享

在上实验前端Nginx调度服务器上再搭建memcache服务器

    安装Memcached服务

    启动服务并查看网络连接状态验证是否开启成功

    关闭SELinux、防火墙

在后端LNMP服务器上部署Session共享

    yum -y install php-pecl-memcache

    //因为后端两台web服务器(web1,web2)都需要连接memcached数据库,所以两台主机都需要安装PHP扩展模块

vim  /etc/php-fpm.d/www.conf            //修改该配置文件的两个参数

    //文件的最后2行

    修改前效果如下:

    php_value[session.save_handler] = files

    php_value[session.save_path] = /var/lib/php/session

    //原始文件,默认定义Sessoin会话信息本地计算机(默认在/var/lib/php/session)

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    修改后效果如下:

    php_value[session.save_handler] = memcache

        #把php的值session对话信息交给谁处理 处理者(handler)是memcache

    php_value[session.save_path] = "tcp://192.168.2.5:11211"

        #传输对话信息的路径是通过tcp协议传给memcache服务器的11211这个端口

    //定义Session信息存储在公共的memcached服务器上,主机参数中为memcache(没有d)

    //通过path参数定义公共的memcached服务器在哪(服务器的IP和端口)

systemctl  restart  php-fpm

原文地址:http://blog.51cto.com/13659481/2130206

时间: 2024-07-29 20:07:11

linux高级运维之memcache服务的相关文章

linux高级运维之×××,pssh工具使用

搭建***虚拟专线: GRE ××× 只支持linux 内核内置的功能 内核也是模块化设计的 PPTP ××× 通信不加密 被发现了容易被加防火墙 L2TP+IPSEC ××× 通信加密 专有通道 走公网ip的线路 再在这个线路上开一个私有的线路192..*** linux系统天生就是路由器!! echo "1" > /proc/sys/net/ipv4/ip_forward 打开路由功能 GRE ×××:启用内核模块ip_gre创建一个虚拟×××隧道(10.10.10.0/24

决心书之学习linux高级运维

我叫振鹏,我是一名在国企工作运维工程师,其实我不是一名合格运维工程师. 为什么我选择一条运维工程师的道路,当时候入门运维工程师比开发好玩,好入门,入门条件也不需要太苛刻,所以就选择了一条运维工程师的道路. 今年6月中旬,因为国企内部结构与业务发生重要的改变,我所在的整个团队都T了.所以现在可以说失业中,在6月中旬左右开始重新找工作.因为以前也是接触linux运维,所以再找一间linux的工作,但是在找工作当中才知道,我在国企内的几年时间里都是白费了.因为民营企业招linux运维,必须是找一名技术

老男孩教育linux高级运维班35期-杨金恒的决心书

决心书 大家好,我是杨金恒,老家是山西运城,从小对技术方面比较感兴趣,之前从事过"联想售后工程师",由于自身造诣不深薪以及公司资待遇不理想,我决定来老男孩深造自己. 学习目标: 熟练掌握运维技能,找到月薪10K+以上的工作. 学习过程: 好好吃饭,按时睡觉,保证身体运行正常. 多看教学视频,保证充分的知识来源. 学习方面尽量做到"格物致知",保持一颗好奇的心. 克服"我以为"的思想,经验可能把自己带沟里. 细心检查命令,尽量自己排错,自学能力的练

高级运维之nginx

linux高级运维之nginx Nginx -one: 基本了解 Nginx搭建 用户认证 基于域名的虚拟主机 安全的ssl虚拟主机 基本了解 常见的web服务器比较: Unix和Linux平台:Apache Nginx tengine Tomcat Lighttpd Windows:IIs(Internet information server) Tengine 淘宝引擎 优化了Nginx server:"tarena" 请求头文件中显示的版本 改过的 不要暴露自己的服务器软件及版本

畅聊Linux系统运维的未来

畅聊Linux系统运维的未来我想来跟大家聊聊Linux运维这一行业,从几个方面说下行业的现状.如何学好Linux和如何成为专业运维人员以及云服务对运Linux运维的影响. 一.linux行业状况我们都知道从1991年Linux开始火爆全球,蔓延至中国,随着智能中国.网络繁荣发展,众多应用基本都跑在Linux服务器上面,但对于大多数人来说还是不太了解.1.入坑门槛太高Linux属于类UNIX操作系统,从开发之初就不是针对普通大众的,而是专门从事计算机行业的员.Linux主要以命令行的方式操作,而这

Linux系统运维与架构设计

一 本章概览 介绍Linux系统运维与架构设计的方方面面 二 Linux基础入门 认识计算机核心硬件和服务器 Linux发展历史.系统组成.应用领域以及发行版 搭建运维环境:VMWareWorkStation.SecureCRT的使用 Linux系统的基本使用 Shell入门以及命令概述 三 Linux系统管理 文件目录管理 用户管理 权限管理 VIM编辑器的使用 文档压缩打包 程序包管理 网络管理 文件系统管理 内存管理 系统管理(监控.环境变量) 安全管理(selinux,iptables)

[转]Linux 系统运维学习方法汇总

Linux 系统运维学习方法汇总 (2014.07.18) from:http://freeloda.blog.51cto.com/2033581/1315694 大纲 一.前言 二.Linux 运维大环境说明 三.Linux 运维学习思路 四.Linux 运维大方向说明 五.Linux 运维学习必看书籍推荐 六.Linux 运维实践内容简介 注,本博文主要用于交流与学习.如有雷同,纯属意外. 一.前言 最近,有不少博友问我.刚进入运维行业怎么学习呢?思路是什么?一点思路也没有,然后与大家在群里

Linux服务器运维安全策略经验分享

http://jxtm.jzu.cn/?p=3692 大家好,我是南非蚂蚁,今天跟大家分享的主题是:线上Linux服务器运维安全策略经验.安全是IT行业一个老生常谈的话题了,从之前的“棱镜门”事件中折射出了很多安全问题,处理好信息安全问题已变得刻不容缓.因此做为运维人员,就必须了解一些安全运维准则,同时,要保护自己所负责的业务,首先要站在攻击者的角度思考问题,修补任何潜在的威胁和漏洞.今天,我为大家讲的,主要分五部分展开:账户和登录安全账户安全是系统安全的第一道屏障,也是系统安全的核心,保障登录

要成为linux网站运维工程师必须要掌握的技能

我是一名linux运维工程师,确切的说是网站运维工程师,从事linux工作有2年多了,对这方面有一些体会,给新手一点借鉴: 首先说下运维种类:有办公网系统运维(就是网管),有IDC外网运维,外网运维里又分网站运维.游戏运维.IDC运维(装系统排障),监控运维(盯着监控).我强烈建议大家选择linux网站运维路线,这个路线绝对是最好的,会了网站运维了去做别的运维岗位绝对也是信手拈来的,网站运维需要的技术点更多,因此,我以我工作的网站运维岗位说说运维都需要啥. 1.选择linux系统选择linux系