mycat分布式+nginx负载均衡(含mysql、jdk、phpadmin、apache安装配置步骤)整理

本文主要是介绍mycat分布式+nginx负载均衡(含mysql、jdk、phpadmin、apache安装配置步骤)整理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

88元购买云服务器

 

 

 

Mysql安装

. 解压MySQL压缩包
    将以下载的MySQL压缩包解压到自定义目录下,我的解压目录是:
    "D:\Program Files\MySQL\mysql-5.6.13-win32"
    将解压目录下默认文件 my-default.ini 拷贝一份,改名 my.ini
    复制下面的配置信息到 my.ini 保存
    #如果没有my-default.ini,可自己新建my.ini或者从其他地方中获取
#########################################################
    [client]
    port=3306
    default-character-set=utf8
    [mysqld]
    port=3306
    character_set_server=utf8
    basedir=D:\Program Files\MySQL\mysql-5.6.13-win32
    #解压目录
    datadir=D:\Program Files\MySQL\mysql-5.6.13-win32\data
    #解压目录下data目录
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    [WinMySQLAdmin]
    D:\Program Files\MySQL\mysql-5.6.13-win32\bin\mysqld.exe
#########################################################

%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

3. 添加环境变量

    操作如下:
    1)右键单击我的电脑->属性->高级系统设置(高级)->环境变量
      点击系统变量下的新建按钮
      输入变量名:MYSQL_HOME
      输入变量值:D:\Program Files\mysql-5.6.11-winx64
      #即为mysql的自定义解压目录。
    2)选择系统变量中的Path
      点击编辑按钮
      在变量值中添加变量值:%MYSQL_HOME%\bin
      注意是在原有变量值后面加上这个变量,用;隔开,不能删除原来的变量值,

4. 将mysql注册为windows系统服务

1)从控制台进入到MySQL解压目录下的 bin 目录下:
    2)输入服务安装命令:
    mysqld install MySQL --defaults-file="D:\Program Files\MYSQL01\mysql-5.6.13-win32\my.ini"

 

mysqld install MySQL3 --defaults-file="D:\Program Files\MySQL03\my.ini"


    #解压目录下修改的my.ini文件
    安装成功后会提示服务安装成功。
    #注:my.ini文件放在MySQL解压后的根目录下
    #移除服务命令为:mysqld remove

5. 启动MySQL服务

    方法一:
        启动服务命令为:net start mysql
    方法二:
        打开管理工具 服务,找到MySQL服务。
        通过右键选择启动或者直接点击左边的启动来启动服务。

6. 修改 root 账号的密码

    刚安装完成时root账号默认密码为空,此时可以将密码修改为指定的密码。如:123456
    c:>mysql –uroot
    mysql>show databases;
    mysql>use mysql;
    mysql>UPDATE user SET password=PASSWORD("123456") WHERE user='root';
    mysql>FLUSH PRIVILEGES;
    mysql>QUIT
 
7. MySQL控制台快捷方式建立:
    1)桌面右键->新建->快捷方式->对象位置输入:C:\Windows\System32\cmd.exe
        快捷方式名称自己定义,确定,快捷方式建立成功
    2)右键单击刚才建立的快捷方式->属性->把目标一栏修改成MySQL启动参数:
        C:\Windows\System32\cmd.exe "D:\Program Files\MySQL\mysql-5.6.13-win32\bin" /k mysql -uroot -p inventory
        解释:CMD路径 "MySQL路径bin目录" /k mysql -u用户名 -p密码 数据库名
    3)修改完成后点击确定保存,直接双击快捷方式即可连接到MySQL数据库

 

 

 

Apache 安装配置

解压Apache_HTTP_Server_2.4.12_JiSuXia

 

注意下面蓝色的路径必须是你本机Apache所在路径

找到D:\application_software\Apache\conf\httpd.conf文件,用记事本打开,找到:Define SRVROOT 这一项,将其右方的值改为

当前你Apache安装存放的目录地址,如下所示:

继续找,找到:Listene 80

若你的80端口被占用(可在cmd下用命令netstat -a查看),则将80端口改为别的保存httpd.conf文件。

接下来需要配置安装Apache的主服务,有了它,Apache才可启动:

打开CMD窗口,输入:"D:\Program Files\Apache\x86\bin\httpd.exe" -k install -n apache

切记,包含引号。该命令的意思是,安装apache服务,并将该服务名称命名为apache(你也可以改成别的),回车。

服务安装完毕,完毕后,会自动测试,若有问题,窗口会提示错误,此时,请根据错误自行排查。

正常安装完毕如下图所示:

其中,Errors reported here must be corrected before the service can be started.意思是,若该句话后面有错误信息,则表示服务安装失败,需要先改正错误。若没有,则成功。

在安装目录中,找到D:\application_software\Apache\bin\ApacheMonitor.exe可执行文件,双击运行,桌面右下角会出现图标,双击打开窗口界面,会看到如图所示:

点击左侧start,启动apache服务。

补充句,从该界面可看出,其可以手动控制服务的开启与关闭,为了节省资源,关闭Apache服务器的时候,请先点击“Stop”关闭apache服务。

当然,该服务也可以在windows系统服务中关闭(建议设置成手动)

下图显示的是该服务成功显示的状态:

打开浏览器,输入访问

http://localhost 若出现如下图所示界面,则Apache服务器的基本配置完毕,此时apache服务器已经可以运行,更具体的配置,需要使用者自行去参悟了。

 

 

END

apache服务的卸载

若Apache服务器软件不想用了,想要卸载,需要先卸载apache服务(切记,若直接删除安装路径的文件夹,会有残余文件在电脑,可能会造成不必要的麻烦)

在CMD命令窗口,输入如下(建议先停止服务再删除):

sc delete apache

apache是Apache服务器的服务名

PHP

解压php_5.6.11到D:\Program Files

具体配置参考下面

Apache启用PHP模块 (PHP配置/Apache配置)

php配置 
php.ini-development 文件重命名为 php.ini 
指定PHP扩展包的具体目录,以便调用相应的DLL文件 
; Directory in which the loadable extensions (modules) reside. 
; http://php.net/extension-dir 
; extension_dir = "./" 
; On windows: 
; extension_dir = "ext" 


修改为 
; Directory in which the loadable extensions (modules) reside. 
; http://php.net/extension-dir 
; extension_dir = "./" 
; On windows: 
extension_dir = "D:/servers/php/ext" 


去掉以下配置注释,支持mysql 


extension=php_curl.dll 
extension=php_gd2.dll 
extension=php_mysql.dll 
extension=php_pdo_mysql.dll 
extension=php_pdo_odbc.dll 


支持session 
session.save_path = "e:/temp" 
上传文件目录配置 
upload_tmp_dir ="e:/temp" 
时区配置 
date.timezone =Asia/Shanghai 
------------------------------------------------


apache配置 

 

找到D:\application_software\Apache\conf\httpd.conf文件,用记事本打开


在#LoadModule vhost_alias_module modules/mod_vhost_alias.so下添加 


LoadModule php5_module "e:/servers/php/php5apache2_2.dll" 
PHPIniDir "e:/servers/php"  这个很关键 注意路径

下面这个注意搜索一下
AddType application/x-httpd-php .php .html .htm 


web主目录修改 
DocumentRoot "D:/servers/Apache2.2/htdocs" 


改为 
DocumentRoot "D:/servers/phpweb" 

-------------------------------------------------------------------------------------
<Directory "D:/servers/Apache2.2/htdocs"> 


改为 
<Directory "D:/phpweb"> 

---------------------------------------------------------------------------
<IfModule dir_module> 
DirectoryIndex index.html 
</IfModule> 


改为 
<IfModule dir_module> 
DirectoryIndex index.php index.html 
</IfModule> 

 

phpmyadmin安装教程及配置设置

解压phpMyAdmin_4.4.11_all_languages.1437381213到apache站点下

将phpmyadmin放到apache站点路径下D:\Program Files\Apache\x86\htdocs

直接访问即可

其中D:\Program Files\Apache\x86\htdocs\phpMyAdmin\libraries

Config.default.php 这个文件

132行 $cfg['Servers'][$i]['port'] = ''; 可以指定mysql端口 默认3306

这样可以切换数据库链接

JDK7.0安命令装

jdk环境变量配置方法:
解压安装jdk7_64_win_jb51net.rar

下面教大家如何配置jdk环境变量:

1.右键选择 计算机→属性→高级系统设置→高级→环境变量

2.系统变量→新建

变量名:JAVA_HOME

变量值:(变量值填写你的jdk的安装目录,例如本人是 E:\Java\jdk1.7.0)

3.在系统变量中找到 Path 变量,选择编辑

在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

(注意如果原来Path的变量值末尾没有;号,就先输入;号再输入上面的代码)

4.系统变量→新建

变量名:CLASSPATH

变量值:.%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点)

到这系统变量就配置完毕了。

测试jdk是否安装成功

1、win+R组合键,输入cmd 打开命令行窗口

2、输入javac,正确就显示如图


jdk是否安装成功: 

运行cmd 输入 java -version (java 和 -version 之间有空格)注意文字说明,默认是win64版本。

截图:

 

 

Mycat分布式数据库

http://www.blogjava.net/amigoxie/archive/2014/12/24/421788.html

解压Mycat-server-1.5-RELEASE-20160301083012-win.tar

 

安装步骤:

   启动前,一般需要修改JVM配置参数,打开conf/wrapper.conf文件,如下行的内容为2G和2048,可根据本机配置情况修改为512M或其它值。

wrapper.java.additional.5=-XX:MaxDirectMemorySize=512M
wrapper.java.additional.6=-Dcom.sun.management.jmxremote
wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=1984
wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.9=-Dcom.sun.management.jmxremote.ssl=false

# Initial Java Heap Size (in MB)
#wrapper.java.initmemory=3
wrapper.java.initmemory=512

# Maximum Java Heap Size (in MB)
#wrapper.java.maxmemory=64
wrapper.java.maxmemory=512

     在命令行窗口中进入MyCAT安装解压文件下的bin目录,输入如下命令可安装(可选)、启动和停止MyCAT,参考结果如下所示:

D:\software\Mycat-server-1.2-GA-win\bin>mycat install
wrapper | Mycat-server installed.

D:\software\Mycat-server-1.2-GA-win\bin>mycat start
wrapper | Starting the Mycat-server service
wrapper | Waiting to start
wrapper | Mycat-server started.

D:\software\Mycat-server-1.2-GA-win\bin>mycat stop
wrapper | Stopping the Mycat-server service
wrapper | Mycat-server stopped.

垂直分切

 <schema name="weixin" checkSQLschema="false" sqlMaxLimit="100" dataNode="weixin" />

  <schema name="yixin" checkSQLschema="false" sqlMaxLimit="100" dataNode="yixin" />

  <schema name="photo" checkSQLschema="false" sqlMaxLimit="100" dataNode="photo" />

  <schema name="bbb" checkSQLschema="false" sqlMaxLimit="100" dataNode="bbb" />

    <dataNode name="weixin" dataHost="testhost" database="weixin" />

    <dataNode name="yixin" dataHost="testhost" database="yixin" />

    <dataNode name="photo" dataHost="testhost" database="photo" />

<dataNode name="bbb" dataHost="testhost2" database="bbb" />

 

<!--<dataNode name="dn4" dataHost="sequoiadb1" database="SAMPLE" />

 <dataNode name="jdbc_dn1" dataHost="jdbchost" database="db1" />

<dataNodename="jdbc_dn2" dataHost="jdbchost" database="db2" />

<dataNode name="jdbc_dn3" dataHost="jdbchost" database="db3" /> -->

    <dataHost name="testhost" maxCon="1000" minCon="10" balance="0"

       writeType="0" dbType="mysql" dbDriver="native">

       <heartbeat>select user()</heartbeat>

       <!-- can have multi write hosts -->

       <writeHost host="hostM1" url="localhost:3306" user="root" password="123456" />

    </dataHost>

  

  

<dataHost name="testhost2" maxCon="1000" minCon="10" balance="0"

       writeType="0" dbType="mysql" dbDriver="native">

       <heartbeat>select user()</heartbeat>

       <!-- can have multi write hosts -->

       <writeHost host="hostM2" url="localhost:3307" user="root" password="123456" />

    </dataHost>

 

水平分表

http://wenku.baidu.com/view/78abcf392b160b4e777fcf6c.html?qq-pf-to=pcqq.c2c

配置文件:schema.xml

自定义一个虚拟数据库mycat 里面添加要水平分表的userinfo(这个表在weixin,bbb的两个数据库中都存在,表结构一样)

  <schema name="mycat" checkSQLschema="false" sqlMaxLimit="100"  >

    <!-- auto sharding by id (long) -->

       <table name="userinfo"  primaryKey="UPID" dataNode="weixin,bbb" rule="rule1">

       </table>

</schema>

配置文件:rule.xml

下面partitionCount是要分库的数量,partitionLength是当多少条数据的时候进行分片,大概意思就是这样。

<tableRule name="rule1">

<rule>

<columns>UPID</columns>

<algorithm>func1</algorithm>

</rule>

</tableRule>

<function name="func1" class="org.opencloudb.route.function.PartitionByLong">

<property name="partitionCount">2</property>

<property name="partitionLength">512</property>

</function>

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

还可以这样写

<function name="func1" class="org.opencloudb.route.function.PartitionByLong">

<property name="partitionCount">1,1</property>

<property name="partitionLength">512,512</property>

</function>

 

配置文件:server.xml

最后不要忘记配置数据库

<user name="test">

<property name="password">test</property>

<property name="schemas">weixin,yixin,photo,bbb,mycat</property>

</user>

<user name="user">

<property name="password">user</property>

<property name="schemas">weixin,yixin,photo,bbb,mycat</property>

<property name="readOnly">true</property>

</user>

最后项目里链接数据库字符串需要链接这个带有分表的库mycat

读写分离:

<dataHost name="testhost" maxCon="1000" minCon="10" balance="1"
       writeType="0" dbType="mysql" dbDriver="native">
       <heartbeat>select user()</heartbeat>
       <!-- can have multi write hosts -->
       <writeHost host="hostM1" url="localhost:3306" user="root" password="">
           <readHost host="hostM2" url="10.18.96.133:3306" user="test" password="test" />
       </writeHost>
</dataHost>

全局表:

<schema name="test_mycat" checkSQLschema="false" sqlMaxLimit="100">
       <!-- auto sharding by id (long) -->
       <table name="t_user" dataNode="user0,user1,user2,user3" rule="rule1">
           <childTable name="t_user_class_rel" primaryKey="id" joinKey="user_id" parentKey="user_id" />
       </table>
       <table name="t_area" primaryKey="id" type="global" dataNode="weixin,yixin,photo,user0,user1,user2,user3" />
</schema>

查看端口是否被占用:netstat -ano

.NET 链接 MySQL

所需DLL:MySQL.Data (可借助动软代码生成器生成的项目中找到)。

所需数据库访问类:DbHelperMySQL(可从动软代码生成器的项目中找到)。

WebConfig 中链接数据库字符串:

<connectionStrings><addname="sql_conn" connectionString="server=localhost;port=3306;database=weixin;uid=root;pwd=123456;"/></connectionStrings>

利用SQLBase泛型底层 (注意添加时表名不能加中括号“[ ]”)。

利用SmileAngel dapper通用底层。

 

Nginx+iis 负载均衡

http://www.cnblogs.com/yanweidie/archive/2015/07/19/4658136.html

解压nginx-1.9.3.zip

配置conf/nginx.conf

修改nginx监听端口,修改http server下的listen节点值,由于本机80端口已经被占用,我改为监听8083端口。

   listen       8083;

  在http节点下添加upstream(服务器集群),server设置的是集群服务器的信息,我这里搭建了两个站点,配置了两条信息。

    #服务器集群名称为Jq_one
    upstream Jq_one {
   server  127.0.0.1:9000; 
   server  127.0.0.1:8082; 
    }

 在http节点下找到location节点修改

  location / {
            root   html;
            index  index.aspx index.html index.htm; #修改主页为index.aspx
     #其中jq_one 对应着upstream设置的集群名称
     proxy_pass         http://Jq_one; 
     #设置主机头和客户端真实地址,以便服务器获取客户端真实IP
     proxy_set_header   Host             $host; 
     proxy_set_header   X-Real-IP        $remote_addr; 
     proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
 }

修改完成配置文件以后记得重启nginx服务,最终完整配置文件信息如下

虽然我们搭建好了负载均衡站点,但是还存在以下问题。

  1.如果站点使用了session,请求平均分配到两个站点,那么必然存在session共享问题,该如何解决?

使用数据库保存session信息

使用nginx将同一ip的请求分配到固定服务器,修改如下。ip_hash会计算ip对应hash值,然后分配到固定服务器

upstream Jq_one{
    server 127.0.0.1:8082 ;
    server 127.0.0.1:9000 ;
     ip_hash;
}

搭建一台Redis服务器,对session的读取都从该Redis服务器上读取。后面的文章将介绍分布式缓存Redis的使用

  2.管理员更新站点文件,该怎么操作,现在还只有两台服务器,可以手工将文件更新到两台服务器,如果是10台呢,那么手工操作必然是不可行的

多服务器站点更新可以使用GoodSync 文件同步程序,会自动检测文件的修改新增,然后同步到其它服务器上。在linux下可以使用rsync

  3.站点中的文件上传功能会将文件分配到不同的服务器,文件共享问题如何解决。

使用文件服务器将所有文件存储到该服务器上,文件操作读取写入都在该服务器上。这里同样会存在一个问题,文件服务器存在读写上限。

  4.负载的服务器配置不一样,有的高有的低可不可以让配置高的服务器处理请求多一些

这里讲一下,负载均衡有好几种算法  轮转法,散列法, 最少连接法,最低缺失法,最快响应法,加权法。我们这里可以使用加权法来分配请求。

     upstream Jq_one{
    server 127.0.0.1:8082 weight=4;
    server 127.0.0.1:9000 weight=1;
}

     通过weight设置每台服务器分配请求站的权重,值越高分配的越多。

 5.由于请求是经过nginx转发过来的,可以在代码里面获取到用户请求的实际ip地址吗?

答案是肯定的,在localtion节点设置如下请求头信息

    #设置主机头和客户端真实地址,以便服务器获取客户端真实IP
     proxy_set_header   Host             $host; 
     proxy_set_header   X-Real-IP        $remote_addr; 
     proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

    代码里面通过Request.Headers["X-Real-IP"],就能获取到真实ip

 6.nginx实现静态文件(image,js,css)缓存

在server节点下添加新的localtion

 #静态资源缓存设置
 location ~ \.(jpg|png|jpeg|bmp|gif|swf|css)$
        { 
            expires 30d;
            root /nginx-1.9.3/html;#root:  #静态文件存在地址,这里设置在/nginx-1.9.3/html下
            break;
        } 

    这是index页面的代码 <li><img src="/images/1.jpg"/></li>

 

 

 

 

 

 

这篇关于mycat分布式+nginx负载均衡(含mysql、jdk、phpadmin、apache安装配置步骤)整理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/616445

相关文章

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

SQL server配置管理器找不到如何打开它

《SQLserver配置管理器找不到如何打开它》最近遇到了SQLserver配置管理器打不开的问题,尝试在开始菜单栏搜SQLServerManager无果,于是将自己找到的方法总结分享给大家,对SQ... 目录方法一:桌面图标进入方法二:运行窗口进入方法三:查找文件路径方法四:检查 SQL Server 安

MySQL 中的 LIMIT 语句及基本用法

《MySQL中的LIMIT语句及基本用法》LIMIT语句用于限制查询返回的行数,常用于分页查询或取部分数据,提高查询效率,:本文主要介绍MySQL中的LIMIT语句,需要的朋友可以参考下... 目录mysql 中的 LIMIT 语句1. LIMIT 语法2. LIMIT 基本用法(1) 获取前 N 行数据(

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

如何在pycharm安装torch包

《如何在pycharm安装torch包》:本文主要介绍如何在pycharm安装torch包方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录在pycharm安装torch包适http://www.chinasem.cn配于我电脑的指令为适用的torch包为总结在p