Сценарии к доменному выделению к серверу

Быстрая тестовая программа показывает errno = 17 "Файл, существует" (просто наблюдение, не, что я ожидал бы, что Вы поймете это прежде, чем отправить).

Я нашел этот поток на mysql сайте, который предлагает, чтобы у Вас были файлы в /var/lib/mysql/my_db/ это, которое не создал mysql (или что он думает, что не создал). Перечислите файлы (Вы должны будете sudo) и посмотрите то, что там. Попытайтесь переместить что-либо туда во временный каталог (или удалить, если Вы действительно уверены, что Вам не будут нужны они), затем попробуйте еще раз.

2
21.08.2018, 05:48
2 ответа

Следующий сценарий Python должен сделать то, что Вы хотите:

#!/usr/bin/python
serv=[]
for l in open("servers.txt","r").xreadlines():  # for each server
    s,n = l.split(",") # extract server name and load
    n=int(n.split("#")[0].strip()) # ignore comments
    serv.append([s.strip(),n]) # store server and its load
for l in open("domain.txt","r").xreadlines(): # for each domain
    m = serv.index(min(serv,key=lambda i:i[1])) # find server with lowest load
    serv[m].append(l.strip()) # add the domain
    serv[m][1]=serv[m][1]+1 # increase the load
alloc=open("allocation.txt","w")
for l in serv:
    print>>alloc, " , ".join([l[0],str(l[1])] + l[2:]) # write output file
1
27.01.2020, 22:23
  • 1
    Как Вы увеличивающий загрузку, в который основание? –  Rahul Patil 02.05.2013, 05:18
  • 2
    @RahulPatil загрузка является вторым столбцом в servers.txt. Каждый раз, когда новый домен распределяется серверу, программа увеличивает это число. BTW, я изменил свою программу, таким образом что внутреннее упорядочивание в serv переменная совпадает с в выходном файле. –  jofel 02.05.2013, 11:19
  • 3
    , который это, точно сделал в моем сценарии удара затем, почему вниз голосуют? –  Rahul Patil 02.05.2013, 11:53
  • 4
    @RahulPatil Да, Ваши сценарии включает эту логику, но это не является общим, это работает только на данный пример в вопросе с одной загрузкой "1" и одна "2", но не в большинстве других случаев, где загрузка отличающаяся распределенный или если намного больше доменов должно быть добавлено. –  jofel 02.05.2013, 13:04
  • 5
    хм.. интересный.. –  Rahul Patil 02.05.2013, 19:49

Вместо того, чтобы хранить информацию в плоских текстовых файлах, Вы могли использовать файловую систему. Например, имейте один файл на IP-адрес в Вашем объединении. Выделение домена к IP-адресу связало бы доменный файл с файлом IP-адреса. Затем Вы знаете то, что является текущим выделением для IP-адреса путем рассмотрения количества ссылок (который является информацией, легко доступной, так как это хранится в inode). И Вы не должны волновать по поводу перезаписи плоских файлов каждый раз и гарантировать эксклюзивный доступ к тем плоским файлам. Можно использовать другие атрибуты файла (как mtime, ctime, uids), чтобы хранить другую информацию о IP-адресах.

Например:

$ ls -lRi
.:
total 8
59597091 drwxr-xr-x 2 chazelas chazelas 4096 May  1 10:12 domain/
59597087 drwxr-xr-x 2 chazelas chazelas 4096 May  1 10:11 ip/

./domain:
total 28
59554312 -rw-r--r-- 5 chazelas chazelas 12 May  1 10:11 test1.com
59554312 -rw-r--r-- 5 chazelas chazelas 12 May  1 10:11 test2.com
59554312 -rw-r--r-- 5 chazelas chazelas 12 May  1 10:11 test3.com
59554312 -rw-r--r-- 5 chazelas chazelas 12 May  1 10:11 test4.com
59554314 -rw-r--r-- 2 chazelas chazelas 11 May  1 10:11 test5.com
59562599 -rw-r--r-- 3 chazelas chazelas 14 May  1 10:11 test6.com
59562599 -rw-r--r-- 3 chazelas chazelas 14 May  1 10:11 test7.com

./ip:
total 12
59554312 -rw-r--r-- 5 chazelas chazelas 12 May  1 10:11 192.0.53.42
59562599 -rw-r--r-- 3 chazelas chazelas 14 May  1 10:11 192.36.155.21
59554314 -rw-r--r-- 2 chazelas chazelas 11 May  1 10:11 192.53.1.2

Выше, количество ссылок (5, 3, 2) один плюс количество доменов, выделенных IP-адресу.

(пере-), выделение домена является затем просто вопросом:

#! /bin/zsh -
domain=domain/$1
rm -f $domain
least_loaded_ip=(ip/*(ol[1]))
ln -f $least_loaded_ip $domain

Освобождение справедливо

#! /bin/zsh -
domain=domain/$1
rm -f $domain

Получение IP для домена справедливо

#! /bin/zsh -
domain=domain/$1
cat $domain

(принятие файла содержит IP-адрес),

Получение списка доменов, выделенных IP-адресу (с GNU находят).

#! /bin/zsh -
ip=ip/$1
find domain -samefile $ip -printf '%P\n'

Затем в качестве награды, ctime из файла прошлый раз, когда домен был выделен или освобожден к нему. Вы могли также использовать mtime (использование touch) сохранить другое время, связанное с ним.

Это использует один inode на IP-адрес. Если Ваши файловые системы индексировали/хешировали каталоги, то получение IP-адреса для домена было бы очень быстро. Весь ln и rm операции являются атомарными, таким образом, два параллельных вызова к тем сценариям не испортили бы вещи.

0
27.01.2020, 22:23

Теги

Похожие вопросы