单客户的静态文件CDN部署规划

应一个客户的需求
做个规划 将于近期开始协助部署
单客户的静态文件CDN部署规划

服务器需求 最低2+
Master主控 数据源
Node+N 访问节点

主控部署
Linux NGINX FTP MYSQL
被控部署+N
Linux NGINX FTP

考虑DNS稳定性 一般建议使用DNSPOD
如果客户未决定 投入2+高稳定与安全的硬件设备作为DNS专用服务器
不推荐自建 否则因DNS稳定性以及安全性,可能会影响主机软件的品牌服务质量与口碑

技术规划
1. 主控作为数据源 需保证高稳定性
建议客户使用我们的新加坡数据中心作为主源 备用使用我们美国洛杉矶数据中心
主要用于客户使用FTP 上传数据 比如图片 CSS JS等文件
考虑扩容以及后续的升级成本
FTP软件使用MYSQL存储数据 包括用户名以及访问日志等等记录 便于管理
使用FTP同步解决文件权限和安全隐患等问题
虽然sync也可以 但是考虑客户后续维护与管理成本 还是建议使用FTP方式
为保证安全性 主控不提供外部WEB访问

2. 被控端
考虑扩容 被控端使用集群方式管理
即主控端输入IP 信息 自动采集SSHKEY
自动部署 同步安装软件 自动安装 自动编译
部署完成后 获得KEY 主控端输入 即被控添加完成
当主控端有文件更新时 自动同步至所有被控的数据源节点
增加脚本客户可手工推送 cronjob定时建议是每5分钟检查同步

考虑客户后续如果升级为动态CDN 反向代理等的成本 多用户等等
采用FTP方式会好些

技术方面会涉及很多 只能慢慢调优和做好压力测试

相关:

  • stonefru

MYSQL优化部署之XFS文件系统

MYSQL优化之XFS文件系统

在最新的centos 6.2系统中
MYSQL可以使用XFS文件系统存取了
最佳的独享I/O

曾经对XFS、JFS、Ext3、ReiserFS文件系统进行过测试,XFS文件文件系统的性能表现相当出众

为什么使用XFS?
采用XFS文件系统,当意想不到的宕机发生后,首先,由于文件系统开启了日志功能,所以你磁盘上的文件不再会意外宕机而遭到破坏了。不论目前文件系统上存储的文件与数据有多少,文件系统都可以根据所记录的日志在很短的时间内迅速恢复磁盘文件内容。
XFS 是一个全64-bit的文件系统,它可以支持上百万T字节的存储空间。对特大文件及小尺寸文件的支持都表现出众,支持特大数量的目录。最大可支持的文件大小为263 = 9 x 1018 = 9 exabytes,最大文件系统尺寸为18 exabytes。
XFS使用高的表结构(B+树),保证了文件系统可以快速搜索与快速空间分配。XFS能够持续提供高速操作,文件系统的性能不受目录中目录及文件数量的限制。
XFS传输带宽能以接近裸设备I/O的性能存储数据。在单个文件系统的测试中,其吞吐量最高可达7GB每秒,对单个文件的读写操作,其吞吐量可达4GB每秒。

详细的部署教程

操作系统: CentOS 6.2 64bit
硬盘设备: /dev/sdb
旧MYSQL目录: /var/lib/mysql
新MYSQL目录: /mysql

首先
格式化硬盘
fdisk /dev/sdb
Sequence pressed on keyboard: n > p > 1 > Enter > Enter > w
$ fdisk -l /dev/sdb

Disk /dev/sdb: 11.8 GB, 11811160064 bytes
255 heads, 63 sectors/track, 1435 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xaa7ca5e3

Device Boot Start End Blocks Id System
/dev/sdb1 1 1435 11526606 83 Linux

yum install -y xfs*
mkfs.xfs /dev/sdb1

xfs_check /dev/sdb1
mkdir /mysql
mount /dev/sdb1 /mysql

添加开机挂载
/etc/fstab

/dev/sdb1 /mysql xfs defaults 0 0

目录变更
$ service mysql stop
$ rsync -avz /var/lib/mysql/ /mysql
$ chown mysql.mysql /mysql
注意要先停止,否则数据可能不同步

MYSQL配置文件更新
datadir = /mysql
启动
service mysql start

检查文件系统的状态
$ mount | grep xfs
/dev/sdb1 on /mysql type xfs (rw)

修复文件系统
$ umount /mysql
$ xfs_repair /dev/sdb1
注意需要先卸载后在修复

相关:

  • linux xfs调优
  • MYSQK
  • mysql文件系统
  • XFSArchives|
  • XFS博客
  • XFS的调优

测试MYSQL负载 生成MYSQL测试数据的方式

通常我们使用mysql数据库服务器 以及mysql集群的时候
需要进行mysql性能以及压力测试
这个时候 我们不能使用生成环境
只能生成一批数据进行测试

本教程就是教你如何生成测试数据

测试约定
MySQL: 版本 5.1.xx Community Server
数据库: dbTest
数据表: test_data

首先 登录

mysql -uroot -p

建立数据库和表

CREATE DATABASE dbTest;
USE dbTest;
CREATE TABLE test_data (
a INT(10) NULL,
b INT(10) NULL,
c INT(10) NULL
)
ENGINE=InnoDB;

生成10万条记录 单次随机插入1000条

DELIMITER //
CREATE PROCEDURE GenerateFakeData()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i <= 100000 DO INSERT INTO tbl_data1 (a,b,c) VALUES ((SELECT floor(rand() * 1000) AS randNum), (SELECT floor(rand() * 1000) AS randNum),(SELECT floor(rand() * 1000) AS randNum)); SET i = i + 1; END WHILE; END // DELIMITER ;

USE dbTest;
CALL GenerateFakeData();

调用

最后我们进行查询测试

SELECT * FROM dbTest.tbl_data1 LIMIT 1,10;

查询10条记录

+——+——+——+
| a | b | c |
+——+——+——+
| 521 | 662 | 748 |
| 753 | 523 | 356 |
| 212 | 994 | 334 |
| 689 | 441 | 139 |
| 374 | 453 | 145 |
| 364 | 386 | 837 |
| 30 | 637 | 96 |
| 571 | 569 | 129 |
| 940 | 312 | 741 |
| 770 | 628 | 828 |
+——+——+——+
10 rows in set (0.00 sec)

是不是有数据库了?

相关:

  • mysql 生成测试数据
  • mysql生成测试数据

配置Squid 最新版使用MySQL服务器进行认证

配置Squid 最新版使用MySQL服务器进行认证

不使用PAM方式 改为MYSQL方式

先下载插件

cd /opt
wget -c //people.arxnet.hu/airween/mysql_auth/mysql_auth-0.8.tar.gz

解压后进入目录

更改

src/mysql_auth.conf

MAKE 一次

make
gcc -I/usr/include -L/usr/lib -c -o src/mysql_auth.o src/mysql_auth.c
gcc -I/usr/include -L/usr/lib -c -o src/confparser.o src/confparser.c
gcc -I/usr/include -L/usr/lib -c -o src/mypasswd.o src/mypasswd.c
gcc -o mysql_auth src/mysql_auth.c src/confparser.c -lmysqlclient -I/usr/include -L/usr/lib
gcc -o mypasswd src/mypasswd.c src/confparser.c -lmysqlclient -I/usr/include -L/usr/lib

执行前 请确定 你的用户 Proxy正确 如果不是请更改

install -o proxy -g shadow -m 755 mysql_auth /usr/lib/squid/mysql_auth
install -o root -g root -m 700 mypasswd /usr/local/bin/squid-passwd

make -p /usr/local/squid/etc/
install -o proxy -g root -m 600 src/mysql_auth.conf /usr/local/squid/etc/mysql_auth.conf
install -o proxy -g root -m 600 src/mysql_auth.conf /usr/local/squid/etc/mysql_auth.conf.default

完成后更新squid.conf 认证方式

###########################################
#This is used for MySQL authentication
auth_param basic program /usr/lib/squid/mysql_auth
#For squid with PAM authentication
#auth_param basic program /usr/lib/squid/pam_auth -1

auth_param basic children 5
auth_param basic realm Magnet Internet Authentication
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
###########################################

添加ACL

acl password proxy_auth REQUIRED
acl acl_name proxy_auth “/etc/proxy/user.list”
acl allow_sites dstdom_regex -i “/etc/proxy/allow.sites”
acl block_sites dstdom_regex -i “/etc/proxy/block.sites”

* add rule for access/privleges
http_access allow allow_sites
http_access deny block_sites !acl_name

查看MYSQL的配置文件

cat src/mysql_auth.conf
#
# mysql_auth.conf – an mysql authenticator config file
# this is the default name. you can call this by other name,
# but set up it in mysql_auth-source/src/define.h.
#
# comment: first character in line is ‘#’
# empty line (EOL at first) allowed
#
# format of parameters and their values:
# parameter – SPACE(S) and/or TAB(S) – value
#
# IMPORTANT: see the mysql_auth-source/scripts/create_script
# this configuration file made by this script
#
# by Ervin Hegedus, 2002, 2003

# hostname
#
# where is the mysql server – the server hostname or IP address;
# first ‘hostname’ directive, and after space(s) or tab(s) its
# value
#
# default:
###################################

hostname 192.168.1.50

###################################
# user
#
# which user can connect to database
# default:

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

user mysql_user

###################################
# password
#
# user’s password for database, that store the accounts
# default:

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

password mysql_passwd

###################################
# database
#
# mysql database name, where accounts places are
# default:

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

database mysql_auth

###################################
# mysql socket
#
# if mysqld doesn’t use INET socket, you must to set this parameter
# where is the location of mysqld socket; if mysqld use INET socket,
# put NULL value
# default:

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

mysqld_socket /var/run/mysqld/mysqld.sock

###################################
# next three directives tells what will the select query,
# like this:
# SELECT * FROM table WHERE user_column LIKE “username” AND password_column LIKE “password”
# where username and password comes from client in HTTP header,
# and user_column and password_column is the columns name in table
# this is an easy way to tune this program to your existing database

# table
#
# the table name, where accounts exist in user-password pair
# default:

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

table squid_users

###################################
# user_column
#
# user column name in table
# if you already have a database, what contains user-password
# pair, you can set it here

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

user_column user_name

###################################
# password_column
#
# password column name in table
# like user column name above
###################################

password_column user_passwd

###################################
# encrypt_password_form
#
# passwords are stored in encrypted form,
# using mysql internal ‘password()’ function
# this mean, you just storing the passwords encrypted format,
# Squid and clients doesn’t use encrypt form!
# The value is case insensitive (YES/yes or not one of these).
# For backward compatibility, default is NO.
#
###################################

#encrypt_password_form NO
encrypt_password_form YES

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

建立SQL数据库

cat scripts/create_script

DROP DATABASE IF EXISTS mysql_auth;

USE mysql;
DELETE FROM user WHERE User LIKE ‘mysql_user’;
DELETE FROM db WHERE User LIKE ‘mysql_user’;
DELETE FROM tables_priv WHERE User LIKE ‘mysql_user’;

CREATE DATABASE mysql_auth;

USE mysql_auth;

CREATE TABLE squid_users
(user_name VARCHAR(16) NOT NULL PRIMARY KEY,
user_passwd VARCHAR(64) BINARY NOT NULL);

GRANT SELECT,INSERT,UPDATE,DELETE ON mysql_auth.* TO ‘[email protected]’localhost’ IDENTIFIED BY ‘mysql_passwd’;
GRANT SELECT,INSERT,UPDATE,DELETE ON mysql_auth.* TO ‘[email protected]’192.168.1.50′ IDENTIFIED BY ‘mysql_passwd’;

#建立数据库 和上面的分开执行

mysql -u root -p < scripts/create_script Enter password: mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 6805 to server version: 5.0.21-Debian_3ubuntu1-log Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer. mysql> show databases;

这样就完成了 检查下输出有无错误,
最后重新启动squid 完成
现在就可以使用mysql认证了

相关:

  • mysql squid分开
  • squid用户认证 mysql

ONAPP云计算 免费版安装方式以及基础教程

ONAPP云计算 免费版安装方式以及基础教程

英国ONAPP云计算产品 开始提供免费版了

今天收到onapp的EDM邮件了,因为之前有谈过代理,但是没谈好,主要原因是我这边不太愿意继续了…..
而且onapp也说打算在中国建分公司,被我用政策原因给打击回去了….

ONAPP 主要是虚拟化的云计算软件
主要是提供云vps业务 目前做的比较大的 是应该uk2集团的 VPS.NET
www.vps.net 使用的是这个,
按照ONAPP客户量计算的话
目前使用这个云计算产品的平台
大概有200个正式商业使用的客户
大部分是数据中心 Continue reading “ONAPP云计算 免费版安装方式以及基础教程”

相关:

  • ONAPP
  • onapp 破解
  • onapp 下载
  • onapp 安装
  • onapp 教程
  • OnApp使用教程
  • OnApp云计算系统
  • onapp安装
  • ONAPP 破解版
  • throwvaa

Posts navigation

123
Scroll to top